C++/Qt で小さな GUI を開発しました。読み込まれた画像がグレースケールかどうかをすばやくテストする方法を知りたいです。実際には、gif 形式のグレースケール画像を読み込むと、depth()=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 current_qimage = QImage(fileName);
は、画像の内容の前に、最初に形式 (ここでは gif) から継承しているようです。したがって、QImage は 2 つのケースで depth() が 32 に等しくなります。
これらの 2 つの gif 画像 (1 つはグレースケールで、もう 1 つはカラー) を区別するにはどうすればよいですか?