Из-за неправильных данных EXIF ​​фотографии JPEG не будут отображаться при вставке в поле изображения Adobe LiveCycle.

ОБНОВЛЕНИЕ 1: проблема подтверждается, поскольку камера добавляет неправильный тег EXIFTool Samsung APP5. Согласно этому веб-сайту: http://exif.regex.info/exif.cgi, изображение имеет неизвестный сегмент App5.

введите описание изображения здесь

Если я удалю байты: E5 00 02 FF, изображение будет отображаться.

введите описание изображения здесь

Кроме того, я понял, что если я удалю данные EXIF ​​с помощью http://www.exifpurge.com/, изображение покажет. Похоже, мне придется написать Java-код, чтобы полностью удалить данные EXIF ​​после вставки изображения.

Будем признательны за любые другие предложения.

ОБНОВЛЕНИЕ 2: ответ найден. Обязательно прочтите комментарии @Mark в ответе ниже. В нем много ценных деталей.


Исходное описание проблемы:

Проверьте это изображение:

https://photos.app.goo.gl/fothcLY8MxRwBeED8 (загружено в Google Фото, оно вроде исправлено в гугл фото)

https://drive.google.com/file/d/1cBjC1ipQqjOGmW4qAXokj5hsxK45QHqM/view?usp=sharing (это исходная версия, если вы попытаетесь вставить ее, она не будет отображаться)

Когда я пытаюсь вставить это изображение в Adobe LiveCycle Image Field, оно не отображается. Если я проверю XML, я вижу, что данные этого изображения в формате Base64 есть, но они не отображаются ни в предварительном просмотре формы, ни в Adobe Acrobat.

Я попытался поиграть с этой фотографией и обнаружил, что если я сжимаю ее с помощью Microsoft Photo Manager, она будет отображаться в поле изображения после того, как я вставлю сжатый файл изображения.

Есть идеи, почему это изображение не отображается в поле изображения Adobe LiveCycle?

Тарек


person tarekahf    schedule 13.09.2019    source источник


Ответы (1)


Я не уверен, каковы ограничения для вашего ответа, но вы можете увидеть маркер APP5 с exiftool следующим образом:

exiftool -v House.jpg 

Вывод

  ExifToolVersion = 11.11
  FileName = House.jpg
  Directory = /Users/mark/Desktop
  FileSize = 372002
  FileModifyDate = 1569258092
  FileAccessDate = 1569258821
  FileInodeChangeDate = 1569258092
  FilePermissions = 33188
  FileType = JPEG
  FileTypeExtension = JPG
  MIMEType = image/jpeg
JPEG APP0 (14 bytes):
  + [BinaryData directory, 9 bytes]
  | JFIFVersion = 1 1
  | ResolutionUnit = 1
  | XResolution = 72
  | YResolution = 72
  | ThumbnailWidth = 0
  | ThumbnailHeight = 0
JPEG APP1 (38248 bytes):
  ExifByteOrder = MM
  + [IFD0 directory with 13 entries]
  | 0)  ImageWidth = 4032
  | 1)  ImageHeight = 3024
  | 2)  Make = samsung
  | 3)  Model = SM-G950W
  | 4)  Orientation = 1
  | 5)  XResolution = 72 (72/1)
  | 6)  YResolution = 72 (72/1)
  | 7)  ResolutionUnit = 2
  | 8)  Software = G950WVLS6CSH1
  | 9)  ModifyDate = 2019:09:11 10:16:15
  | 10) YCbCrPositioning = 1
  | 11) ExifOffset (SubDirectory) -->
  | + [ExifIFD directory with 31 entries]
  | | 0)  ExposureTime = 0.004237288136 (1/236)
  | | 1)  FNumber = 1.7 (170/100)
  | | 2)  ExposureProgram = 2
  | | 3)  ISO = 50
  | | 4)  ExifVersion = 0220
  | | 5)  DateTimeOriginal = 2019:09:11 10:16:15
  | | 6)  CreateDate = 2019:09:11 10:16:15
  | | 7)  ComponentsConfiguration = 1 2 3 0
  | | 8)  ShutterSpeedValue = 7.882 (7882/1000)
  | | 9)  ApertureValue = 1.53 (153/100)
  | | 10) BrightnessValue = 5.23 (523/100)
  | | 11) ExposureCompensation = 0 (0/10)
  | | 12) MaxApertureValue = 1.53 (153/100)
  | | 13) MeteringMode = 2
  | | 14) LightSource = 0
  | | 15) Flash = 1
  | | 16) FocalLength = 4.25 (425/100)
  | | 17) MakerNoteUnknown (SubDirectory) -->
  | | + [MakerNotes directory with 7 entries]
  | | | 0)  Unknown_0x0001 = 0100
  | | | 1)  Unknown_0x0002 = 73728
  | | | 2)  Unknown_0x000c = 0
  | | | 3)  Unknown_0x0010 = undef (0/0)
  | | | 4)  Unknown_0x0040 = 0
  | | | 5)  Unknown_0x0050 = 1
  | | | 6)  Unknown_0x0100 = 0
  | | 18) UserComment = UNICODE.
  | | 19) FlashpixVersion = 0100
  | | 20) ExifImageWidth = 4032
  | | 21) ExifImageHeight = 3024
  | | 22) InteropOffset (SubDirectory) -->
  | | + [InteropIFD directory with 1 entries]
  | | | 0)  InteropVersion = 0100
  | | 23) SensingMethod = 2
  | | 24) SceneType = 1
  | | 25) ExposureMode = 0
  | | 26) WhiteBalance = 0
  | | 27) FocalLengthIn35mmFormat = 26
  | | 28) SceneCaptureType = 0
  | | 29) ImageUniqueID = F12QSJA00SM F12QSKB01SB
  | | 30) OffsetSchema = 0
  | 12) GPSInfo (SubDirectory) -->
  | + [GPS directory with 9 entries]
  | | 0)  GPSVersionID = 2 2 0 0
  | | 1)  GPSLatitudeRef = N
  | | 2)  GPSLatitude = 0 0 0 (0/1 0/1 0/10000)
  | | 3)  GPSLongitudeRef = E
  | | 4)  GPSLongitude = 0 0 0 (0/1 0/1 0/10000)
  | | 5)  GPSAltitudeRef = 0
  | | 6)  GPSAltitude = 0 (0/1000)
  | | 7)  GPSTimeStamp = 14 16 15 (14/1 16/1 15/1)
  | | 8)  GPSDateStamp = 2019:09:11
  + [IFD1 directory with 9 entries]
  | 0)  ImageWidth = 504
  | 1)  ImageHeight = 376
  | 2)  Compression = 6
  | 3)  Orientation = 1
  | 4)  XResolution = 72 (72/1)
  | 5)  YResolution = 72 (72/1)
  | 6)  ResolutionUnit = 2
  | 7)  ThumbnailOffset = 1212
  | 8)  ThumbnailLength = 37030
JPEG APP5 (0 bytes):                    <--- HERE'S THAT BAD BOY !!!!
JPEG APP2 (3158 bytes):
  ICC_Profile chunk 1 of 1
  + [ICC_Profile directory with 17 entries, 3144 bytes]
  | ProfileHeader (SubDirectory) -->
  | + [BinaryData directory, 128 bytes]
  | | ProfileCMMType = Lino
  | | ProfileVersion = 528
  | | ProfileClass = mntr
  | | ColorSpaceData = RGB 
  | | ProfileConnectionSpace = XYZ 
  | | ProfileDateTime = 1998 2 9 6 49 0
  | | ProfileFileSignature = acsp
  | | PrimaryPlatform = MSFT
  | | CMMFlags = 0
  | | DeviceManufacturer = IEC 
  | | DeviceModel = sRGB
  | | DeviceAttributes = 0 0
  | | RenderingIntent = 0
  | | ConnectionSpaceIlluminant = 0.9642 1 0.82491
  | | ProfileCreator = HP  
  | | ProfileID = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  | 0)  ProfileCopyright = Copyright (c) 1998 Hewlett-Packard Company
  | 1)  ProfileDescription = sRGB IEC61966-2.1
  | 2)  MediaWhitePoint = 0.95045 1 1.08905
  | 3)  MediaBlackPoint = 0 0 0
  | 4)  RedMatrixColumn = 0.43607 0.22249 0.01392
  | 5)  GreenMatrixColumn = 0.38515 0.71687 0.09708
  | 6)  BlueMatrixColumn = 0.14307 0.06061 0.7141
  | 7)  DeviceMfgDesc = IEC http://www.iec.ch
  | 8)  DeviceModelDesc = IEC 61966-2.1 Default RGB colour space - sRGB
  | 9)  ViewingCondDesc = Reference Viewing Condition in IEC61966-2.1
  | 10) ViewingConditions (SubDirectory) -->
  | + [BinaryData directory, 36 bytes]
  | | ViewingCondIlluminant = 19.6445 20.3718 16.8089
  | | ViewingCondSurround = 3.92889 4.07439 3.36179
  | | ViewingCondIlluminantType = 1
  | 11) Luminance = 76.03647 80 87.12462
  | 12) Measurement (SubDirectory) -->
  | + [BinaryData directory, 36 bytes]
  | | MeasurementObserver = 1
  | | MeasurementBacking = 0 0 0
  | | MeasurementGeometry = 0
  | | MeasurementFlare = 0.00999
  | | MeasurementIlluminant = 2
  | 13) Technology = CRT 
  | 14) RedTRC = curv.......#(-27;@EJOTY^chmrw|......................................%.[snip]
  | 15) GreenTRC = curv.......#(-27;@EJOTY^chmrw|......................................[snip]
  | 16) BlueTRC = curv.......#(-27;@EJOTY^chmrw|......................................%[snip]
JPEG DQT (65 bytes):
JPEG DQT (65 bytes):
JPEG SOF0 (15 bytes):
  ImageWidth = 1024
  ImageHeight = 768
  EncodingProcess = 0
  BitsPerSample = 8
  ColorComponents = 3
JPEG DHT (29 bytes):
JPEG DHT (179 bytes):
JPEG DHT (29 bytes):
JPEG DHT (179 bytes):
JPEG SOS

И вы можете удалить это с помощью exifTool вот так:

exiftool -APP5:all= YourImage.jpg
person Mark Setchell    schedule 23.09.2019
comment
Большое спасибо. Пожалуйста, не стесняйтесь ... Могу ли я использовать этот инструмент командной строки exiftool из программы Java, работающей в контексте веб-службы? В настоящее время существует код Java, сжимающий изображение. Я хочу полностью удалить данные EXIF ​​перед сжатием изображения. Какой подход лучше? - person tarekahf; 23.09.2019
comment
Я предполагаю, что в Java есть какая-то команда system() или subprocess(), которая позволяет запускать внешние утилиты, но я не знаю ... вот почему я сказал, что не знаю ваших ограничений. Надеюсь, кто-то еще сможет вам помочь. - person Mark Setchell; 23.09.2019
comment
Спасибо @Mark! Инструмент командной строки действительно работал. Я провел тест локально, и фиксированное изображение действительно появилось в поле изображения. Как я могу удалить все данные exif? - person tarekahf; 23.09.2019
comment
Вы можете использовать exiftool -all= YourImage.jpg для очистки всех данных EXIF ​​с изображения и exiftool -all= DIRECTORY для очистки всех файлов в каталоге. - person Mark Setchell; 23.09.2019
comment
Вы также можете использовать ImageMagick с magick input.jpg -strip output.jpg, и он также имеет привязки Java - очевидно, IM4Java и JMagick im4java.sourceforge.net - person Mark Setchell; 23.09.2019
comment
Спасибо. Я также нашел этот образец: baeldung.com/run-shell-command-in- java. Я думаю, что в ImageMagick есть все, что мне нужно, даже сжатие. Я искал инструмент для добавления текста к изображению. Я думаю, это тоже так. - person tarekahf; 23.09.2019
comment
Я ответил на добавление текста с помощью ImageMagick здесь, stackoverflow.com/a/55470441/2836621 - person Mark Setchell; 23.09.2019
comment
Вау! Не думаю, что смогу лучше ответить. Это сработало как шарм! - person tarekahf; 23.09.2019