JPEGMetadata无法解析为某种类型

Aus*_*ris 4 java jpeg exif metadata

我正在开发一个程序,它本质上将成为专用JPEG图像的EXIF数据压模.

GUI将包含一个搜索框,一个加载按钮和一个显示EXIF数据的显示框.但我正在与读者讨论一个问题:

public class MetaRead {
    public String readCustomData(byte[] imageData, String key) throws IOException{
        ImageReader imageReader = ImageIO.getImageReadersByFormatName("JPEG").next();

        imageReader.setInput(ImageIO.createImageInputStream(new ByteArrayInputStream(imageData)), true);

        // read metadata of first image
        IIOMetadata metadata = imageReader.getImageMetadata(0);

        //this cast helps getting the contents 

        JPEGMetadata JPEGmeta = (JPEGMetadata) metadata; 
        NodeList childNodes = JPEGmeta.getStandardTextNode().getChildNodes();

        for (int i = 0; i < childNodes.getLength(); i++) {
            Node node = childNodes.item(i);
            String keyword = node.getAttributes().getNamedItem("keyword").getNodeValue();
            String value = node.getAttributes().getNamedItem("value").getNodeValue();
            if(key.equals(keyword)){
                return value;
            }
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误{JPEGMetadata JPEGmeta = (JPEGMetadata metadata;} "JPEGMetadata无法解析为类型"

原始代码用于PNG,所以我用带有查找/替换的JPEG替换了所有PNG.

Tux*_*Tux 23

好的,好吧.我不知道如何解释这一点而不是直言不讳.

在编程中,你不能改变对象的名称PNGMetadata,以JPEGMetadata和期望它的工作.

你看,该对象PNGMetadata被开发用于PNG图像并且仅用于PNG图像.您不能只将名称更改为JPEG并期望它适用于它.

如果你需要一些适用于JPEG的东西,我可以推荐一个库来读取JPEG元数据.请参阅以下链接.

https://drewnoakes.com/code/exif/

  • 好吧,我从来没有叫你白痴!;)你会继续学习.我可以向你保证,你不会再犯这个错误了.如果你这样做,我会找到你,并给你一个很好的打击!祝你好运,朋友! (12认同)
  • 好的,谢谢你,我知道我好像是个白痴.我之前从未使用过元数据,而且我还在学习.我是Java编程的新手,并将其作为我实习的项目. (8认同)
  • 感谢您的帮助 (4认同)