我在C ++ / Qt中开发了一个小型GUI,我想知道一种快速测试图像加载是否为灰度的方法。实际上,当我加载gif格式的灰度图像时,我希望它被识别为深度()= 8的灰度图像,当我加载彩色的gif图像时,QImage的深度将是32。
这是我的开放式方法:
void ImageViewer::open()
{
int status_off = 0;
fileName = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::currentPath());
if (!fileName.isEmpty()) {
current_qimage = QImage(fileName);
if (current_qimage.isNull()) {
QMessageBox::information(this, tr("Image Viewer"),
tr("Cannot load %1.").arg(fileName));
return;
}
updateStatus(status_off);
// Image is colored with depth=8
if (current_qimage.depth()/8 != 4)
{rgblum_status = 0;}
else // Image is grayscale with depth=32
{rgblum_status = 1;}
loadImage();
}
}
从我的第一次测试开始,似乎current_qimage = QImage(fileName);
中的current_qimage首先从图像内容之前的格式(此处为gif)继承。因此,QImage在两种情况下具有等于32的depth()。
如何区分这两个gif图像(一个灰度和另一个灰色)?
答案 0 :(得分:2)
QImage
类有一个函数,您可以调用该函数来测试图像是否为灰度:QImage::isGrayscale()
。它适用于8位色表索引图像和32位图像。