我正在使用类似的东西来检查JPEG图像的颜色空间(天真的,显然):
import java.io.*;
import java.awt.color.*;
import java.awt.image.*;
import javax.imageio.*;
class Test
{
public static void main(String[] args) throws java.lang.Exception
{
File f = new File(args[0]);
if (f.exists())
{
BufferedImage bi = ImageIO.read(f);
ColorSpace cs = bi.getColorModel().getColorSpace();
boolean isGrayscale = cs.getType() == ColorSpace.TYPE_GRAY;
System.out.println(isGrayscale);
}
}
}
不幸的是,对于(直观)仅显示为灰色的图片,报告false
。
什么检查会做正确的事?
答案 0 :(得分:2)
图片看起来像灰色,因为r=g=b
但实际上它是全彩色图片,它有三个频道r g b
而real gray
图片只有一个频道
答案 1 :(得分:2)
您可以使用此代码:
File input = new File("inputImage.jpg");
BufferedImage image = ImageIO.read(input);
Raster ras = image.getRaster();
int elem = ras.getNumDataElements();
System.out.println("Number of Elems: " + elem);
如果elems的数量返回1,那么它是一个灰度图像。如果它返回3,那么它是一个彩色图像。