Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QImage, parsing raw char from image to get alpha?

QImage, parsing raw char from image to get alpha?

Scheduled Pinned Locked Moved Unsolved General and Desktop
qimageqopengl
14 Posts 4 Posters 2.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mranger90M Offline
    mranger90M Offline
    mranger90
    wrote on last edited by
    #2

    What is temp[] ? is it a byte array or a pixel array ?

    D 1 Reply Last reply
    0
    • mranger90M mranger90

      What is temp[] ? is it a byte array or a pixel array ?

      D Offline
      D Offline
      Dariusz
      wrote on last edited by
      #3

      @mranger90 Oh sorry, missed that!

      uchar *temp = (uchar *) img.constBits();

      1 Reply Last reply
      0
      • Christian EhrlicherC Offline
        Christian EhrlicherC Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @Dariusz said in QImage, parsing raw char from image to get alpha?:

        run but sadly no luck...

        What does this mean?

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        1 Reply Last reply
        1
        • D Offline
          D Offline
          Dariusz
          wrote on last edited by
          #5

          That this

          uchar *temp = (uchar *) img.constBits();
          
          ...
                      pixelOffset = imageWidth * he + (wi * 4);
                      alpha = temp[pixelOffset];//qAlpha(img.pixel(wi, he)); /// img.pixel work but slow due to different access function
          

          does not return alpha int. as far as I understand img.constBits() return 1d array, 4 values equal to a color, esentially A-R-G-B, so every 4th item is the alpha value and pixelOffset uses/calculates indexOffset in to the 1d array from 2d array of height*width of image.

          The loop function in 1st post shows it.

          I don't understand why the value I get from the loop above is not alpha.

          1 Reply Last reply
          0
          • Christian EhrlicherC Offline
            Christian EhrlicherC Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #6

            Your offset calculation is wrong, every pixel has 4 bytes.

            Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
            Visit the Qt Academy at https://academy.qt.io/catalog

            D 1 Reply Last reply
            0
            • Christian EhrlicherC Christian Ehrlicher

              Your offset calculation is wrong, every pixel has 4 bytes.

              D Offline
              D Offline
              Dariusz
              wrote on last edited by
              #7

              @Christian-Ehrlicher said in QImage, parsing raw char from image to get alpha?:

              Your offset calculation is wrong, every pixel has 4 bytes.

              Hmm did I not address that in (wi*4) ? You say bytes but isn't uchar *temp an array of ints? I'm lost o.o

              1 Reply Last reply
              0
              • Christian EhrlicherC Offline
                Christian EhrlicherC Offline
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on last edited by
                #8

                @Dariusz said in QImage, parsing raw char from image to get alpha?:

                uchar *

                I don't see int here... only (unsigned) char

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                D 1 Reply Last reply
                1
                • Christian EhrlicherC Christian Ehrlicher

                  @Dariusz said in QImage, parsing raw char from image to get alpha?:

                  uchar *

                  I don't see int here... only (unsigned) char

                  D Offline
                  D Offline
                  Dariusz
                  wrote on last edited by Dariusz
                  #9

                  @Christian-Ehrlicher Yeah, sorry just used to ints.

                  So the:
                  uchar *temp = (uchar *) img.constBits();
                  Should be something like
                  temp = [alpha, red, green, blue, alpha, red, green, blue, alpha, red, green, blue, alpha, red, green, blue, alpha, red, green, blue ]
                  Each value being char. 0-255 - not quite sure how to deal with 32 bit+ arrays tho... are they then int *temp ? constBits return only chars... I'm lost I never dig in to 16/32+ image formats...

                  so if I were to do temp[0] / temp[4],temp[8] then they all should be alphas?

                  So what am I missing in
                  imageWidth * imageHeightIndex + (imageWidthIndex *4)
                  Which if gives correct numbers would result for 300x400 image (w x h)

                  300 * 0 + (0*4) = 0
                  300 * 0 + (1*4) = 4
                  300 * 0 + (2*4) = 8
                  

                  etc etc so I'm getting correct index to retrieve alpha ?

                  What am I missing ? o.O

                  1 Reply Last reply
                  0
                  • Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #10

                    @Dariusz said in QImage, parsing raw char from image to get alpha?:

                    What am I missing ? o.O

                    Simple math I would say:
                    4 bytes per pixel, row is 300 pixels = 1200 bytes per row

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    D 1 Reply Last reply
                    1
                    • Christian EhrlicherC Christian Ehrlicher

                      @Dariusz said in QImage, parsing raw char from image to get alpha?:

                      What am I missing ? o.O

                      Simple math I would say:
                      4 bytes per pixel, row is 300 pixels = 1200 bytes per row

                      D Offline
                      D Offline
                      Dariusz
                      wrote on last edited by
                      #11

                      @Christian-Ehrlicher Hmm char is 2 byte big... so do I offset by 8 instead and add up 2 items together?

                      int alpha = temp[0]<<temp[1] ?

                      1 Reply Last reply
                      0
                      • Christian EhrlicherC Offline
                        Christian EhrlicherC Offline
                        Christian Ehrlicher
                        Lifetime Qt Champion
                        wrote on last edited by
                        #12

                        @Dariusz said in QImage, parsing raw char from image to get alpha?:

                        char is 2 byte big

                        Ok, now I'm giving up...

                        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                        Visit the Qt Academy at https://academy.qt.io/catalog

                        D 1 Reply Last reply
                        0
                        • Christian EhrlicherC Christian Ehrlicher

                          @Dariusz said in QImage, parsing raw char from image to get alpha?:

                          char is 2 byte big

                          Ok, now I'm giving up...

                          D Offline
                          D Offline
                          Dariusz
                          wrote on last edited by
                          #13

                          @Christian-Ehrlicher said in QImage, parsing raw char from image to get alpha?:

                          @Dariusz said in QImage, parsing raw char from image to get alpha?:

                          char is 2 byte big

                          Ok, now I'm giving up...

                          Eh crap its short thats 2 byte big... char is 1 byte... ehhhhhhhh I forgot about shorts :/. Ok so esentially I have to grab 4 chars and add them up to int?

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #14

                            Hi,

                            Why do you want to combine them back into and int ?

                            If you have a ARGB image, basically you have:

                            uchar *start = (uchar *) img.constBits();
                            uchar *alpha = start + 0;
                            uchar *red = start + 1;
                            uchar *green = start + 2;
                            uchar *blue = start + 3;
                            
                            // First alpha value:
                            uint8 alphaValue = *alpha;
                            // Second value of alpha
                            alphaValue = *(alpha + 4)
                            

                            if you want to sum them, then make alphaValue an int and that's all.

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            1 Reply Last reply
                            4

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved