Мне интересно написать несколько новых пользовательских тегов в файле jpeg. Я использую библиотеки "org.apache.commons.imaging" для работы с метаданными jpeg в java. Я просто не знаю, как определить новый настраиваемый тег; напишите его, а затем прочитайте значение тега позже.
Вот мой код, который читает файл 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. Процесс записи пользовательских тегов [вид] варьируется в зависимости от этих форматов.
Вы можете написать маркер COM с текстом в любом файле JPEG. Вы можете написать маркетинг APPn с любым желаемым файлом JPEG, если вы не используете один из маркеров APPn, используемый конкретным файловым форматом.
В Exif существует тег UserComment, который вы можете использовать для своих собственных данных.
В вашем примере предполагается, что EXIF - это формат файла.