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. Make a palette image from palette data
Forum Updated to NodeBB v4.3 + New Features

Make a palette image from palette data

Scheduled Pinned Locked Moved Solved General and Desktop
35 Posts 4 Posters 4.3k Views 2 Watching
  • 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.
  • M mpergand
    for each point
          get pos, r, v, b
          set color gradiant from the vars above
    
    K Offline
    K Offline
    Kris Revi
    wrote on last edited by Kris Revi
    #23

    @mpergand sooo

        int amountPoint;
        amountPoint = jsonArr.count()/4;
        float p=0,s=1.0/(amountPoint-1);
        QLinearGradient gradient = QLinearGradient(0,0, rect().width(), 0);
    
        for (int i = 0; i < amountPoint; i++)
        {
            // but how to get the pos, r, g, b since its just a long array of ints
           // gradient.setColorAt(p, QColor(r,g,b));
        }
    
    1 Reply Last reply
    0
    • M Offline
      M Offline
      mpergand
      wrote on last edited by
      #24

      qjsonarray.at

      K 1 Reply Last reply
      0
      • M mpergand

        qjsonarray.at

        K Offline
        K Offline
        Kris Revi
        wrote on last edited by
        #25

        @mpergand

        int pos = jsonArr.at(i).toInt();
        

        but what about R, G, B?

        int r = jsonArr.at(i).toInt();
        int g = jsonArr.at(i).toInt();
        int b = jsonArr.at(i).toInt();
        
        1 Reply Last reply
        0
        • K Offline
          K Offline
          Kris Revi
          wrote on last edited by
          #26

          am i doing something wrong here?

          QImage MainWindow::createPaletteImage(QJsonArray jsonArr)
          {
              int width = 500;
              int height = 26;
              QImage image(width, height, QImage::Format_RGB32);
              image.fill(Qt::white);
          
              QPainter painter(&image);
          
              int amountPoint;
              amountPoint = jsonArr.count()/4;
              float p=0,s=1.0/(amountPoint-1);
              QLinearGradient gradient = QLinearGradient(0,0, rect().width(), 0);
          
              for (int i = 0; i < amountPoint; i++)
              {
                  int pos = jsonArr.at(i).toInt();
                  int r = jsonArr.at(i+1).toInt();
                  int g = jsonArr.at(i+2).toInt();
                  int b = jsonArr.at(i+3).toInt();
          
                  gradient.setColorAt(p, QColor(r,g,b));
              }
              return image;
          }
          
          1 Reply Last reply
          0
          • Christian EhrlicherC Offline
            Christian EhrlicherC Offline
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #27

            @Kris-Revi said in Make a palette image from palette data:

            int pos = jsonArr.at(i).toInt();
            gradient.setColorAt(p, QColor(r,g,b));

            Apart from the really strange idea to store a image in such an extensive way you want 'pos' in the second call.

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

            K 1 Reply Last reply
            1
            • Christian EhrlicherC Christian Ehrlicher

              @Kris-Revi said in Make a palette image from palette data:

              int pos = jsonArr.at(i).toInt();
              gradient.setColorAt(p, QColor(r,g,b));

              Apart from the really strange idea to store a image in such an extensive way you want 'pos' in the second call.

              K Offline
              K Offline
              Kris Revi
              wrote on last edited by
              #28

              @Christian-Ehrlicher said in Make a palette image from palette data:

              you want 'pos' in the second call.

                      int pos = jsonArr.at(i).toInt();
                      int r = jsonArr.at(i+1).toInt();
                      int g = jsonArr.at(i+2).toInt();
                      int b = jsonArr.at(i+3).toInt();
              
                      gradient.setColorAt(pos, QColor(r,g,b));
              

              huh like so? :S

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mpergand
                wrote on last edited by mpergand
                #29
                for(int p=0; p<amountPoint; p++)
                        {
                            int pos=jsonArr[p*4];
                            int r=jsonArr[p*4+1];
                            int g=jsonArr[p*4+2];
                            int b=jsonArr[p*4+3];
                            
                            gradient.setColorAt(pos/255.0, QColor(r,g,b));
                        }
                       
                
                K 1 Reply Last reply
                0
                • M mpergand
                  for(int p=0; p<amountPoint; p++)
                          {
                              int pos=jsonArr[p*4];
                              int r=jsonArr[p*4+1];
                              int g=jsonArr[p*4+2];
                              int b=jsonArr[p*4+3];
                              
                              gradient.setColorAt(pos/255.0, QColor(r,g,b));
                          }
                         
                  
                  K Offline
                  K Offline
                  Kris Revi
                  wrote on last edited by
                  #30

                  @mpergand

                  QImage MainWindow::createPaletteImage(QJsonArray jsonArr)
                  {
                      int width = 500;
                      int height = 26;
                      QImage image(width, height, QImage::Format_RGB32);
                      image.fill(Qt::white);
                  
                      QPainter painter(&image);
                  
                      int amountPoint;
                      amountPoint = jsonArr.count()/4;
                      float p=0,s=1.0/(amountPoint-1);
                      QLinearGradient gradient = QLinearGradient(0,0, rect().width(), 0);
                  
                      for (int p = 0; p < amountPoint; p++)
                      {
                          int pos=jsonArr[p*4].toInt();
                          int r=jsonArr[p*4+1].toInt();
                          int g=jsonArr[p*4+2].toInt();
                          int b=jsonArr[p*4+3].toInt();
                  
                          gradient.setColorAt(pos/255.0, QColor(r,g,b));
                      }
                      painter.fillRect(rect(),QBrush(gradient));
                      return image;
                  }
                  

                  produces
                  b31f83ea-6644-4c2d-af87-1ff271f7a8f2-image.png

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mpergand
                    wrote on last edited by
                    #31

                    Check the values in the debugger.

                    K 1 Reply Last reply
                    0
                    • M mpergand

                      Check the values in the debugger.

                      K Offline
                      K Offline
                      Kris Revi
                      wrote on last edited by Kris Revi
                      #32

                      @mpergand all i got is

                      POS :  0
                      RGB :  255 0 0
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.12549
                      RGB :  171 85 0
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.25098
                      RGB :  171 171 0
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.376471
                      RGB :  0 255 0
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.501961
                      RGB :  0 171 85
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.627451
                      RGB :  0 0 255
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.752941
                      RGB :  85 0 171
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  0.878431
                      RGB :  171 0 85
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      POS :  1
                      RGB :  255 0 0
                      GRAD :  QBrush(QColor(Invalid),LinearGradientPattern)
                      
                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        mpergand
                        wrote on last edited by
                        #33

                        Don't paste my code as this !
                        QLinearGradient gradient = QLinearGradient(0,0, rect().width(), 0);

                        should be the image width no ?

                        K 1 Reply Last reply
                        0
                        • M mpergand

                          Don't paste my code as this !
                          QLinearGradient gradient = QLinearGradient(0,0, rect().width(), 0);

                          should be the image width no ?

                          K Offline
                          K Offline
                          Kris Revi
                          wrote on last edited by
                          #34

                          @mpergand oh yea! now it worked :) thank you all

                          here is the working code and the solution

                          QImage MainWindow::createPaletteImage(QJsonArray jsonArr)
                          {
                              int width = 500;
                              int height = 26;
                              QImage image(width, height, QImage::Format_RGB32);
                              image.fill(Qt::white);
                          
                              QPainter painter(&image);
                          
                              int amountPoint;
                              amountPoint = jsonArr.count()/4;
                              float p=0,s=1.0/(amountPoint-1);
                              QLinearGradient gradient = QLinearGradient(0,0, width, 0);
                          
                              for (int p = 0; p < amountPoint; p++)
                              {
                                  int pos=jsonArr[p*4].toInt();
                                  int r=jsonArr[p*4+1].toInt();
                                  int g=jsonArr[p*4+2].toInt();
                                  int b=jsonArr[p*4+3].toInt();
                          
                                  gradient.setColorAt(pos/255.0, QColor(r,g,b));
                              }
                              painter.fillRect(rect(),QBrush(gradient));
                              return image;
                          }
                          
                          M 1 Reply Last reply
                          0
                          • K Kris Revi

                            @mpergand oh yea! now it worked :) thank you all

                            here is the working code and the solution

                            QImage MainWindow::createPaletteImage(QJsonArray jsonArr)
                            {
                                int width = 500;
                                int height = 26;
                                QImage image(width, height, QImage::Format_RGB32);
                                image.fill(Qt::white);
                            
                                QPainter painter(&image);
                            
                                int amountPoint;
                                amountPoint = jsonArr.count()/4;
                                float p=0,s=1.0/(amountPoint-1);
                                QLinearGradient gradient = QLinearGradient(0,0, width, 0);
                            
                                for (int p = 0; p < amountPoint; p++)
                                {
                                    int pos=jsonArr[p*4].toInt();
                                    int r=jsonArr[p*4+1].toInt();
                                    int g=jsonArr[p*4+2].toInt();
                                    int b=jsonArr[p*4+3].toInt();
                            
                                    gradient.setColorAt(pos/255.0, QColor(r,g,b));
                                }
                                painter.fillRect(rect(),QBrush(gradient));
                                return image;
                            }
                            
                            M Offline
                            M Offline
                            mpergand
                            wrote on last edited by
                            #35

                            @Kris-Revi said in Make a palette image from palette data:
                            painter.fillRect(rect(),QBrush(gradient));

                            should be I think: QRect(0,0,width,height)

                            1 Reply Last reply
                            0

                            • Login

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