Qt 不能用一个通道保存图像吗?

Qt save image with one channel not possible?

我有一个缓冲区,里面装满了一些图像数据(640x480 像素,一个通道 [灰度])。我想使用 Qt(作为 BMP 或 PNG)将此图像写入我的磁盘。

预期大小 BMP:300 KB

实际大小 BMP:900 KB

看来Qt的save方法不能处理一个通道的图片。这是一个已知的 Qt 错误还是我做错了什么?

QImage const img((char const *)data, image.width, image.height, QImage::Format_Grayscale8)
QPixmap::fromImage(img).save(path, "BMP")

我尝试使用 Qt 5.3 和 5.7

编辑: 使用这个已有 8 年历史的解决方法似乎可行 http://www.qtcentre.org/archive/index.php/t-10237.html,但图像看起来太亮了 :(

我认为出现问题是因为您 没有 保存 QImage -- 您正在将它转换为 QPixmap 然后保存它.似乎是 QImageQPixmap 的转换导致格式更改。

如果要保存为灰度 bmp 文件,只需保存 QImage.