我可以检查字节数组是否像wmf, emf这样的元文件图像使用下面的java代码
private boolean isMetaFileFormat(byte[] pictureData)
{
BufferedImage image = null;
try
{
image = ImageIO.read(new ByteArrayInputStream(pictureData));
if(image != null)
return false;
}
catch (Exception e){ }
return true;
}
但是如何具体检查它是emf还是WMF图像?
WMF文件的幻数为0x9AC6CDD7
, EMF幻数为0x01000000
。
使用Java Mime Magic Library
简便而普通。下载
MagicMatch match = Magic.getMagicMatch(your_byte_array);
String mimeType = match.getMimeType();
if(mimeType.equals("image/x-emf")) {
//here is emf
}
if(mimeType.equals("image/x-wmf")) {
//here is wmf
}
您可以从字节数组
获取图像类型byte[] pictureData = null;
ImageInputStream stream;
try {
stream = ImageIO.createImageInputStream(new ByteArrayInputStream(
pictureData));
Iterator<ImageReader> readers = ImageIO.getImageReaders(stream);
while (readers.hasNext()) {
ImageReader read = readers.next();
read.getFormatName();
}
} catch (Exception e) {
}