小编Ram*_*hna的帖子

创建 BufferedImage 后元数据丢失

我正在使用以下代码在 PNG 图像中写入元数据:

public synchronized static byte[] writeMetaDataInPNGImage(BufferedImage buffImg,
                                                                      String key, String value)

{
    byte[][] image = null;
    try
    {


        ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();

        ImageWriteParam writeParam = writer.getDefaultWriteParam();
        ImageTypeSpecifier typeSpecifier = ImageTypeSpecifier
            .createFromBufferedImageType(BufferedImage.TYPE_INT_RGB);

        // adding metadata
        IIOMetadata metadata = writer.getDefaultImageMetadata(typeSpecifier, writeParam);

        IIOMetadataNode textEntry = new IIOMetadataNode("tEXtEntry");
        textEntry.setAttribute("keyword", key);
        textEntry.setAttribute("value", value);
        IIOMetadataNode text = new IIOMetadataNode("tEXt");
        text.appendChild(textEntry);

        IIOMetadataNode root = new IIOMetadataNode("javax_imageio_png_1.0");
        root.appendChild(text);
        int width = buffImg.getWidth();
        int height = buffImg.getHeight();
        metadata.mergeTree("javax_imageio_png_1.0", root);



        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        ImageOutputStream stream = …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage metadata inputstream javax.imageio

2
推荐指数
1
解决办法
1629
查看次数