Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何在jpeg文件中编写自定义标记(程序员注释)_Java_Metadata_Jpeg_Exif_Imaging - Fatal编程技术网

Java:如何在jpeg文件中编写自定义标记(程序员注释)

Java:如何在jpeg文件中编写自定义标记(程序员注释),java,metadata,jpeg,exif,imaging,Java,Metadata,Jpeg,Exif,Imaging,我想在jpeg文件中写一些新的用户定义标签。我使用“org.apache.commons.imaging”库处理java中的jpeg元数据。我只是不知道如何定义一个新的自定义标记;写入它,然后稍后读取标记的值 这是我的代码,它读取jpeg文件并进行输出 public void setExifCustomTag(final File jpegImageFile, final File dst) throws IOException, ImageReadException, Imag

我想在jpeg文件中写一些新的用户定义标签。我使用“org.apache.commons.imaging”库处理java中的jpeg元数据。我只是不知道如何定义一个新的自定义标记;写入它,然后稍后读取标记的值

这是我的代码,它读取jpeg文件并进行输出

public void setExifCustomTag(final File jpegImageFile, final File dst) throws IOException,
        ImageReadException, ImageWriteException {
    OutputStream os = null;
    boolean canThrow = false;
    try {
        TiffOutputSet outputSet = null;

        final IImageMetadata metadata = Imaging.getMetadata(jpegImageFile);
        final JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
        if (null != jpegMetadata) {
            // note that exif might be null if no Exif metadata is found.
            final TiffImageMetadata exif = jpegMetadata.getExif();

            if (null != exif) {
                outputSet = exif.getOutputSet();
            }
        }
        if (null == outputSet) {
            outputSet = new TiffOutputSet();
        }



        TagInfoAscii tag1 = new TagInfoAscii("custom tag", 1, 20, TiffDirectoryType.EXIF_DIRECTORY_MAKER_NOTES);
        outputSet.getExifDirectory().add(tag1, "custom value");

        TiffOutputField to = outputSet.findField(tag1);
        //How should I read the value ???????????????

        os = new FileOutputStream(dst);
        os = new BufferedOutputStream(os);

        new ExifRewriter().updateExifMetadataLossless(jpegImageFile, os,
                outputSet);
        canThrow = true;
    } finally {
        IoUtils.closeQuietly(canThrow, os);
    }
}

我不能将此作为评论,因此我必须走到这里:

你的问题需要澄清一下。有多种JPEG文件格式。编写自定义标记的过程[种类]因格式而异

您可以在任何JPEG文件中使用文本编写COM标记。 只要不使用特定文件格式使用的APPn标记之一,就可以在JPEG文件中使用任何内容编写APPn营销

在Exif中,定义了一个UserComment标记,您可以将其用于自己的数据

您的示例假定EXIF是文件格式