2
我有一个关于BufferedImage#getType方法的问题。当引用从文件系统PNG图像,下面的代码将打印我的Mac 和在这个JVM一个CentOS框:为什么java.awt.image.BufferedImage#getType返回不同的值Mac和CENTOS
Java版本 “1.6.0_03” 的Java(TM)SE运行时环境(建立1.6.0_03-B05) 的HotSpot的Java(TM)64位服务器VM(建立1.6.0_03-B05,混合模式)
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;
public class ImageTypeTest {
public static void main(String[] args) throws Exception{
BufferedImage sourceImage = ImageIO.read(new File("/path/to/png.png"));
System.out.println(sourceImage.getType());
}
}
任何人都可以请一些线索,以什么可能是造成这种差异,以便我可以解决它?该代码为其他图像类型返回相同的值,例如GIF图像。
谢谢
这是完全正常的。 *“解决它”*是什么意思?您可以使用所需的确切类型实例化自己的BufferedImage,并复制您在BufferedImage中读取的图像。 AFAIK你不能强制ImageIO.read直接创建你想要的BufferedImage类型。还要注意,强制自己的BufferedImage类型可能会导致在您定位的各种平台上处理所述图像时的次优性能。 – SyntaxT3rr0r 2010-12-08 20:28:26
您好Webinator,我明白这是正常的;问题是,原因是什么?为什么在不同的操作系统中为同一图像获取不同的图像类型?这就是我不明白,如果它是相同的图像文件,他们为什么会不同?感谢您的回复。 – Ytsejammer 2010-12-08 21:10:14