如何检查字节数组是否为.emf或.wmf格式



我可以检查字节数组是否像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) {
    }

最新更新