作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法让 Qt5 保存灰度 Format_Indexed8
图像。当我保存文件时,我得到了一个没有相关功能的多色困惑。我期待一个灰度 BMP。
单色图像存储为sizeof(uchar)*widthGL*heightGL
。
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,widthGL,heightGL,
GL_LUMINANCE,GL_UNSIGNED_BYTE,noise);
//computation
QImage mySurface(noise,widthGL,heightGL,QImage::Format_Indexed8);
mySurface.save("test.bmp","BMP");
我目前的工作涉及使用第二个数组并且感觉很脏
static unsigned char* mbuffer = new unsigned char[3*widthGL*heightGL];
for (int i = 0,bpos=0;i<widthGL*heightGL;i++)
{
mbuffer[bpos++]=noise[i];
mbuffer[bpos++]=noise[i];
mbuffer[bpos++]=noise[i];
}
QImage mySurface(mbuffer,widthGL,heightGL,QImage::Format_RGB888);
我想知道是否有任何方法可以让 Qt5 输出类似于灰度图像的东西。
编辑
There is a reasonable chance this problem is solved in the latest version of Qt.
最佳答案
问题是在使用之前没有在图像中设置颜色表。来自 Qt 文档(http://doc.qt.io/qt-5/qimage.html#QImage-4):
If format is an indexed color format, the image color table is initially empty and must be sufficiently expanded with setColorCount() or setColorTable() before the image is used.
你可以试试这个:
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,widthGL,heightGL,GL_LUMINANCE,GL_UNSIGNED_BYTE,noise);
//computation
QVector<QRgb> colorTable(256); //our grayscale palette
QImage mySurface(noise,widthGL,heightGL,QImage::Format_Indexed8);
for (int i = 0; i < 256; ++i)
colorTable[i] = qRgb(i, i, i); //build palette
mySurface.setColorCount(256);
mySurface.setColorTable(colorTable);
mySurface.save("test.bmp","BMP");
关于image - 如何在 Qt 5 中保存灰度图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035205/
我是一名优秀的程序员,十分优秀!