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



我在c++/Qt中开发了一个小GUI,我想知道一个快速的方法来测试图像加载是否为灰度。在实践中,当我加载gif格式的灰度图像时,我希望它被识别为深度()=8的灰度图像,而当我加载彩色gif图像时,QImage的深度将为32。

这是我的open方法:
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的depth()等于32。

如何区分这两个gif图像(一个是灰度的,另一个是彩色的)?

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

相关内容

  • 没有找到相关文章

最新更新