static QIcon CreateIcon(const nall::image& image, bool scale = false) { nall::image qtBuffer = image; qtBuffer.transform(0, 32, 255u << 24, 255u << 16, 255u << 8, 255u << 0); if(scale) qtBuffer.scale(16, 16, Interpolation::Linear); QImage qtImage(qtBuffer.data, qtBuffer.width, qtBuffer.height, QImage::Format_ARGB32); return QIcon(QPixmap::fromImage(qtImage)); }
//-------------------------------------------------------------------------------------------------- void ImageViewDialog::setImage( const cv::Mat& image ) { if ( image.type() != CV_8UC3 && image.type() != CV_8UC4 ) { printf( "Warning: Invalid image type...\n" ); return; } // Take a copy of the image mImage = image; // Prepare for image mpScene->setSceneRect( 0, 0, mImage.cols, mImage.rows ); // Draw the color image QPixmap pixmap( mImage.cols, mImage.rows ); if ( image.type() == CV_8UC3 ) { QImage qtImage( mImage.data, mImage.cols, mImage.rows, QImage::Format_RGB888 ); pixmap.convertFromImage( qtImage ); } else if ( image.type() == CV_8UC4 ) { QImage qtImage( mImage.data, mImage.cols, mImage.rows, QImage::Format_RGB32 ); pixmap.convertFromImage( qtImage ); } if ( NULL == mpPixmapItem ) { mpPixmapItem = new ImageViewPixmap( pixmap, this ); mpScene->addItem( mpPixmapItem ); } else { mpPixmapItem->setPixmap( pixmap ); } clearDragRectangle(); }
QImage wxQtConvertImage( const wxImage &image ) { bool hasAlpha = image.HasAlpha(); bool hasMask = image.HasMask(); wxSize size ( image.GetWidth(), image.GetHeight() ); QImage qtImage( wxQtConvertSize( size ), ( (hasAlpha || hasMask ) ? QImage::Format_ARGB32 : QImage::Format_RGB32 ) ); unsigned char *data = image.GetData(); unsigned char *alpha = hasAlpha ? image.GetAlpha() : NULL; QRgb colour; QRgb maskedColour; if ( hasMask ) { unsigned char r, g, b; image.GetOrFindMaskColour( &r, &g, &b ); maskedColour = ( r << 16 ) + ( g << 8 ) + b; } for (int y = 0; y < image.GetHeight(); y++) { for (int x = 0; x < image.GetWidth(); x++) { if (hasAlpha) { colour = alpha[0] << 24; alpha++; } else colour = 0; colour += (data[0] << 16) + (data[1] << 8) + data[2]; if ( hasMask && colour != maskedColour ) colour += 0xFF000000; // 255 << 24 qtImage.setPixel(x, y, colour); data += 3; } } return qtImage; }