QT如何将PNG 32位转换为BMP 32位?

时间:2017-03-14 07:20:40

标签: qt

我想创建一个BMP 32位文件。

但是会创建一个BMP 24位图像。

如何将PNG 32位转换为BMP 32位?

这是我的代码

QImage image;
image.load("123.png");

QPixmap preview;
preview = preview.fromImage(image,Qt::DiffuseAlphaDither);
preview.save("123.bmp");

1 个答案:

答案 0 :(得分:1)

关于bool qt_write_dib(QDataStream &s, QImage image)中qbmphandler.cpp中的Qt 5源代码,支持32位的位图,但首先转换为24位(至少有第4个通道)。

见这里:

if (image.depth() == 8 && image.colorCount() <= 16) {
    bpl_bmp = (((bpl+1)/2+3)/4)*4;
    nbits = 4;
} else if (image.depth() == 32) {
    bpl_bmp = ((image.width()*24+31)/32)*4;
    nbits = 24;
} else {
    bpl_bmp = bpl;
    nbits = image.depth();
}

您可以查看我的小位图处理程序类here。可能会有所帮助。