저는 Windows Live 사진 갤러리의 작동 방식과 비슷한 방법으로 내 이미지에 태그를 쓰는 방법을 연구했습니다. 여러 다른 라이브러리 (메타 데이터 추출기, jhead, jheader, sanselan)를 사용했지만 실제로 필요한 데이터를 다시 작성하기 위해 Sanselan 만 찾았습니다.Sanselan으로 EXIF XPKEYWORDS 쓰기
나는 아파치의 WriteExifMetadataExample에서 T &까지 따라 갔다. 그것은 GPS 데이터와 Aperture를 업데이트하는데 완벽하게 작동했다.
그런 다음 EXIF_TAG_APERTURE_VALUE
이 아닌 EXIF_TAG_XPKEYWORDS
을 업데이트하기 위해 예제를 수정하려고했습니다.
String currentTagsAsString = new String((byte[]) jpegMetadata.findEXIFValue(ExifTagConstants.EXIF_TAG_XPKEYWORDS).getValue());
System.out.println("current tags: '" + currentTagsAsString + "'");
String newTag = "h e l l o";
String newTagsAsString = currentTagsAsString.trim() + " ; " + newTag + " ";
System.out.println("new desired tags: '" + newTagsAsString + "'");
TiffOutputField keywords = new TiffOutputField(ExifTagConstants.EXIF_TAG_XPKEYWORDS, FieldType.FIELD_TYPE_BYTE, newTagsAsString.length(), newTagsAsString.getBytes());
exifDirectory.removeField(ExifTagConstants.EXIF_TAG_XPKEYWORDS);
exifDirectory.add(keywords);
기타, 나머지는 내가 혼자 : 위의 링크 된 예에서
, 나는 다음과TiffOutputField.create
라인을 교체했다. 나는 바이트 배열의 형식이 나 혼란 스럽다는 것을 인정할 것이다. 그래서 문제가 될 것이다.
경고/오류/기타가 표시되지 않습니다. 프로세스가 정상적으로 완료되었지만 새 이미지 파일에 업데이트 된 태그가 없습니다. 새 이미지에 업데이트 된 태그가없는 이유는 무엇입니까? 더 쉽고/좋은 방법이 있습니까?
업데이트 : 대신 1.0 RC 공유 이미징 API로 작업하도록 코드를 편집했지만 결과는 같습니다. 나는 완벽
TiffImageMetadata metadata = toTiffMetadata(Imaging.getMetadata(inputFile));
System.out.println(metadata.getFieldValue(MicrosoftTagConstants.EXIF_TAG_XPKEYWORDS));
TiffOutputSet outputSet = metadata.getOutputSet();
TiffOutputDirectory exif = outputSet.getOrCreateExifDirectory();
exif.removeField(MicrosoftTagConstants.EXIF_TAG_XPKEYWORDS);
exif.add(MicrosoftTagConstants.EXIF_TAG_XPKEYWORDS, "helloworld;goodbye;");
writeFileWithNewTag(inputFile,destinationFile,outputSet);
새로운 코드는 내가 EXIF_TAG_XPAUTHOR
같은 것을 사용하는 경우 잘 작동하지만, EXIF_TAG_XPKEYWORDS
를 사용하여 오류 또는 경고 또는 어떤 종류의 메시지와 새 파일이 단순히 doens을 생산하지 여기에 사용되는 코드를 포함하고있다 새 태그 데이터가 포함되어 있지 않습니다.
을 발견 한 코드 아래에 시도를 제공 할 수 있습니다. 원래 바이트 배열의 실제 인코딩에는 공백 문자가 포함되지 않고 대신 '0'바이트가 포함됩니다. 난 운이 없으면 코드를 적절하게 조정했다. – Randyaa
이것을 할 방법을 찾았습니까? 즉, XPKEYWORDS를 새로 작성/업데이트/덮어 쓰시겠습니까? 그렇지 않다면 하나를 발견했을 수 있습니다. 하지만 내 게시 방법보다는 내 접근 방식을 비교하고 싶습니다. 다른 점을보기 만하면됩니다. 어쨌든 나는 그것을 여기에 곧 게시 할 것이다. – 2dvisio