[ https://issues.apache.org/jira/browse/IMAGING-319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17836844#comment-17836844 ]
Bruno P. Kinoshita commented on IMAGING-319: -------------------------------------------- Hi [~yangsicheng] , your code and instructions were very clear, thank you very much. I followed the instructions (updated code example with `noformat` for JIRA) and then used `exiftool` + `diff`: {noformat} kinow@ranma:~/Desktop$ diff <(exiftool --dump iPhone12-geotag.JPG) <(exiftool editted-iPhone12-geotag.JPG) 2c2 < File Name : iPhone12-geotag.JPG --- > File Name : editted-iPhone12-geotag.JPG 5,7c5,7 < File Modification Date/Time : 2024:04:13 19:45:28+02:00 < File Access Date/Time : 2024:04:13 19:46:21+02:00 < File Inode Change Date/Time : 2024:04:13 19:45:28+02:00 --- > File Modification Date/Time : 2024:04:13 19:57:02+02:00 > File Access Date/Time : 2024:04:13 19:57:02+02:00 > File Inode Change Date/Time : 2024:04:13 19:57:02+02:00 77c77 < Thumbnail Offset : 2642 --- > Thumbnail Offset : 2192 {noformat} So the offset field is really incorrect (as pointed in earlier comments). I'm slowly trying to understand what's happening here, while reviewing the PR [https://github.com/apache/commons-imaging/pull/359] too. > updateExifMetadataLossless lost the first character of a String > --------------------------------------------------------------- > > Key: IMAGING-319 > URL: https://issues.apache.org/jira/browse/IMAGING-319 > Project: Commons Imaging > Issue Type: Bug > Components: Format: JPEG > Affects Versions: 1.0-alpha2 > Reporter: Sicheng Yang > Assignee: Bruno P. Kinoshita > Priority: Major > Attachments: Screen Shot 2021-11-26 at 4.01.06 PM-1.png, Screen Shot > 2021-11-26 at 4.01.21 PM-1.png, iPhone12-geotag.JPG > > Time Spent: 40m > Remaining Estimate: 0h > > I try to use TiffOutputSet to generate a new image. However, if a tag that > contains String, the program may miss the first character of the String. > {noformat} > package org.apache.commons.imaging; > import org.apache.commons.imaging.common.ImageMetadata; > import org.apache.commons.imaging.formats.jpeg.JpegImageMetadata; > import org.apache.commons.imaging.formats.jpeg.exif.ExifRewriter; > import org.apache.commons.imaging.formats.tiff.TiffImageMetadata; > import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet; > import java.io.BufferedOutputStream; > import java.io.File; > import java.io.FileOutputStream; > import java.io.IOException; > public class LibraryTest { > public static void main(String[] args) throws ImagingException, > IOException { > File source = new File("/home/kinow/Desktop/iPhone12-geotag.JPG"); > File result = new > File("/home/kinow/Desktop/editted-iPhone12-geotag.JPG"); > final ImageMetadata metadata = Imaging.getMetadata(source); > final JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata; > final TiffImageMetadata exif = jpegMetadata.getExif(); > TiffOutputSet outputSet = exif.getOutputSet(); > BufferedOutputStream bufferedOutputStream = new > BufferedOutputStream(new FileOutputStream(result)); > new ExifRewriter().updateExifMetadataLossless(source, > bufferedOutputStream, outputSet); > } > }{noformat} > This is the sample code. > Tag value in original image > !image-2021-11-26-16-01-58-645.png! > Tag value in output image > !image-2021-11-26-16-04-12-185.png! -- This message was sent by Atlassian Jira (v8.20.10#820010)