Qt - 验证加载的图像是否为灰度

时间:2013-02-27 21:37:37

标签: qt qt4 qt5 grayscale qimage

我在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图像(一个灰度和另一个灰色)?

1 个答案:

答案 0 :(得分:2)

QImage类有一个函数,您可以调用该函数来测试图像是否为灰度:QImage::isGrayscale()。它适用于8位色表索引图像和32位图像。