0

QImage myImage(w, h, QImage::Format_ARGB32);在 Qt中使用是否有替代方法?(w并且h是导入图片的宽度和高度)?

这是代码:

if (tif) {
          uint32 w, h;

          TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);
          TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
          QImage myImage(w, h, QImage::Format_ARGB32);

          if (!myImage.isNull()) {
            if (TIFFReadRGBAImage(tif, w, h, reinterpret_cast<uint32 *>(myImage.bits()), 0)) {
                myImage = myImage.rgbSwapped();
                myImage = myImage.mirrored();
            }
            else {

                   return ImageStatePtr(0);
            }

           }

           TIFFClose(tif);
           ImageStatePtr ptr = ImageStatePtr(new ImageState(QFileInfo(filename).fileName(), myImage));
           return ptr;

    }
    else return ImageStatePtr(0);
}

我需要用具有相同功能的替代品替换 QImage 。出于某种原因,我不允许在我的项目中使用 QImage。

4

1 回答 1

1

如果要导入图像,您可能需要这样:

QImage::QImage ( const QString & fileName, const char * format = 0 );

您可以简单地使用这种方式:

QImage myImage("test.png");

您也可以使用 QPixmap 代替:

QPixmap myPixmap("test.png");

QImage 和 QPixmap 对于不同的任务很有用。文档说:

Qt 提供了四个类来处理图像数据:QImage、QPixmap、QBitmap 和 QPicture。QImage 是为 I/O 和直接像素访问和操作而设计和优化的,而 QPixmap 是为在屏幕上显示图像而设计和优化的。QBitmap只是一个继承QPixmap的便利类,保证深度为1。如果QPixmap对象真的是位图,isQBitmap()函数返回true,否则返回false。最后,QPicture 类是一个绘制设备,用于记录和重放 QPainter 命令。

于 2013-09-05T00:14:59.010 回答