LINUX.ORG.RU

Добавить текстовый комментарий в WebP

 ,


1

1

Хочу добавить 1400-байтный комментарий к картинке. exiv2 -c отвечает «Установка Image comment в WebP изображений не поддерживается». webpmux требует созданный сторонней программой файл exif (или xmp) и не проверяет его валидность, если использовать *.exv, сделанный exiv2, другие программы этот комментарий не видят.

Чем его добавить?

Или WebP принципиально не могут содержать текст?

★★★★★

Вроде бы exiftool последней версии умеет добавлять в webp. Я сейчас в основном на древнем mint обитаю, там не последняя версия.

Как-то с распознаванием в графических утилитах всё плохо: даже в тех файлах jpg|webp в которых exiftool находит exif-метаданные ни просмотрщик картинок, ни файловый менеджер ничего не видят (возможно они у меня слишком древние).

master_0K
()

Возникает вопрос, что если так туго с утилитами добавления комментариев в webp (относительно новый формат), то не туго ли и с просмоторщиками, которые эти комментарии умеют показывать (именно в webp)?

Есть примеры своих или чужих файлов, в которых твои просмоторщики отображают комментарии?

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от master_0K

Вроде бы exiftool последней версии умеет добавлять в webp.

У 13.10, 13.30 и 13.40 (вчерашний) в мануалах написано, что с WebP работать умеют, но комментарии добавлять отказываются:

$ exiftool -comment=Текст. 1.webp 
    0 image files updated
    1 image files unchanged

Для JPG и PNG это работает.

даже в тех файлах jpg|webp в которых exiftool находит exif-метаданные ни просмотрщик картинок, ни файловый менеджер ничего не видят (возможно они у меня слишком древние).

Nomacs 3.21.1 для JPEG и PNG всё показывает.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от KivApple

Возникает вопрос, что если так туго с утилитами добавления комментариев в webp (относительно новый формат), то не туго ли и с просмоторщиками, которые эти комментарии умеют показывать (именно в webp)?

Поэтому и задал последний вопрос: возможно ли его добавить в принципе?

question4 ★★★★★
() автор топика

WebP был агрессивно продвигаемый гуглом формат, который особо как-то и не прижился в отличие от WebM, разве что только в среде сеошников, где Google несправедливо повышал сайты в выдаче если изображения были в WebP вместо JPG/PNG.

Я бы поостерегся использовать этот формат, так как есть старый добрый JPEG который работает везде, а если его не хватает есть JXL и AVIF.

EXL ★★★★★
()
Ответ на: комментарий от question4

У меня версия 12.40 прямо пишет

Error: Writing of WEBP files is not yet supported - example.webp

Латиницей тоже не принимает?

WebP принципиально не могут содержать текст?

Если верить переводу Спецификация контейнера WebP то «да» – всё проще простого: дописываем сигнатуру(чанк) EXIF и сам файл метаданных. Я даже пытался что-то такое сделать (безрезультатно. Правда сама эта спецификация небрежно составлена, ошибки и неточности прямо вопиющие.

master_0K
()
Последнее исправление: master_0K (всего исправлений: 3)
Ответ на: комментарий от EXL

особо как-то и не прижился

Прижился, значительно помогает экономить трафик (даже в сервисах яндекса, авито WebP картинки), очень давно поддерживается в более 90% браузерах, в отличии от AVIF и тем более JXL.

yandrey ★★
()
Ответ на: комментарий от question4

Хвала интернету!

Сначала я нашёл файл с «куцей» секцией EXIF в нём… (делал всякое-разное безуспешно) … потом нашёл ресурс и получил ЭТО !!!файл при клике сразу загружается ( переложить куда-нибудь?

осталась самая малость – понять, почему ТАМ получается, а у нас нет: инструменты же те (наверное)

master_0K
()
Последнее исправление: master_0K (всего исправлений: 2)
Ответ на: комментарий от EXL

JPEG который работает везде

Разложение по косинусу порождает хорошо заметные артефакты на контрастных изображениях. Если хватает мощности компьютера, уж лучше вейвлеты.

AVIF

На Андроиде плохо поддерживается.

JXL

А этот ещё и Гугл саботирует.

question4 ★★★★★
() автор топика
Ответ на: комментарий от master_0K

https://metaeditor.api.picvario.com/api/v1/files/download/d994e92d-683a-46a7-960c-21f062d077db/42289

«File not exists»

инструменты же те (наверное)

Может, и нет. Исходников не видно, только доступ к API.

https://web24.com.ua/wp-content/uploads/2021/10/tema-06-001webp.webp

Nomacs, по крайней мере, этот EXIF видит.

P.S. А exiv2+webpmux могут его перецепить на другой файл.

P.P.S. exiftool перецепленный EXIF понимает только частично. Exif Byte Order, X Resolution, Y Resolution, Resolution Unit и Software не отобразились. Возможно потому, что часть их не соответствуют файлу.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 4)

Только что проверил в GIMP можно вписать метаданные. И он их отображает.

Итого exiv2 и exif просто не умеют работать с webp походу. Ну или что-то с версиями форматов. Я в этой теме мало разбираюсь.

Или WebP принципиально не могут содержать текст?

Если очень хочется то все могут

cat image.webp metadata.txt > result.webp

:)))

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от question4

Обновление, херня какая-то, я снова открыл в гимпе и там ничего.
Дабы исключить случайности, снова скачал картинку вабп, открыл в гимпе, вписал во все поля test, сохранил метаданные, эспортировал и перезаписал файл. Снова по новой его открыл и гимп ничего не показывает, он видимо метаданные принимает просто молча подразумевая что будет сохранено в его xcf формат, а при сохранении в webp просто игнорируется всё что оно не может.

Ну, могло бы ругнуться при вписывании или сохранении что «этот формат не может в то что вы меняли» или типа того.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от question4

Видимо удалили через некоторое время после закрытия вкладки. Файл загрузил на 1 день. Кроме редактирования EXIF онлайн-редактор добавил XMP; упоминается exiftool v12.55

Локально так вижу

exiv2 metaeditor_webp-1.webp

File name       : metaeditor_webp-1.webp
File size       : 49088 Bytes
MIME type       : image/webp
Image size      : 819 x 546
Thumbnail       : None
Camera make     : 
Camera model    : 
Image timestamp : 
File number     : 
Exposure time   : 
Aperture        : 
Exposure bias   : 
Flash           : 
Flash bias      : 
Focal length    : 
Subject distance: 
ISO speed       : 
Exposure mode   : 
Metering mode   : 
Macro mode      : 
Image quality   : 
White balance   : 
Copyright       : 
Exif comment    : charset=Unicode Длинный комментарий добавленный в файл с помощью он-лайн сервиса  https://metaeditor.picvario.com/ как же они это сделали?! известно, что использовали exiftool 12.55

exiftool metaeditor_webp-1.webp

ExifTool Version Number         : 12.40
File Name                       : metaeditor_webp-1.webp
Directory                       : .
File Size                       : 48 KiB
File Modification Date/Time     : 2025:10:25 15:25:56+03:00
File Access Date/Time           : 2025:10:25 15:25:56+03:00
File Inode Change Date/Time     : 2025:10:25 15:25:56+03:00
File Permissions                : -r--------
File Type                       : WEBP
File Type Extension             : webp
MIME Type                       : image/webp
VP8 Version                     : 0 (bicubic reconstruction, normal loop)
Image Width                     : 819
Horizontal Scale                : 0
Image Height                    : 546
Vertical Scale                  : 0
Exif Byte Order                 : Big-endian (Motorola, MM)
Image Description               : Комментарий
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : Unknown (0)
Software                        : paint.net 4.2.15
Artist                          : Added comment
Exif Version                    : 0232
Components Configuration        : Y, Cb, Cr, -
User Comment                    : Длинный комментарий добавленный в файл с помощью он-лайн сервиса  https://metaeditor.picvario.com/ как же они это сделали?! известно, что использовали exiftool 12.55
Flashpix Version                : 0100
Color Space                     : Uncalibrated
XMP Toolkit                     : Image::ExifTool 12.55
Creator                         : Added comment
Description                     : Комментарий
Image Creator Name              : Added comment
Image Size                      : 819x546
Megapixels                      : 0.447
master_0K
()
Ответ на: комментарий от question4

Кажется понял )

exiftool может выдавать содержимое блока EXIF в разных форматах CSV|XML|json и из них же компилировать этот самый блок(ещё не проверял, как правильно этим пользоваться). Нужно сделать шаблон и дальше «как-то с этим работать».

master_0K
()
Последнее исправление: master_0K (всего исправлений: 1)
Ответ на: комментарий от master_0K

Можно также извлечь этот блок EXIF из tema-06-001webp.webp в бинарном виде и модифицировать его.

Как создать аналогичный файл с нуля exiftool-ом или exiv2-ом, чтобы его принял WebP — не нашёл.

question4 ★★★★★
() автор топика

Добавить произвольные данные напрямую, похоже, возможности нет. Но можно попробовать закодировать их base64 и тогда добавить в поле dc:description:

> cat data.xmp

<x:xmpmeta xmlns:x="adobe:ns:meta/">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
      <dc:description>custom data block</dc:description>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>

> webpmux -set xmp data.xmp input.webp -o output.webp
> webpmux -get xmp output.webp -o data1.xmp

Посмотреть в gimp: Image -> Metadata -> View Metadata -> XMP.

LLM-9000
()
Ответ на: комментарий от question4

В бинарном формате работать у меня не получилось. Это было первое, что я попытался провернуть.

В WebP секции метаданных в конце файла. Поэтому относительно легко отрезаются (конечно лучше парсить с начала, проверять корректность секций). Далее изменяем «шаблон блока EXIF» с перечислением пар «имя тега: значение». Это самая сложная часть: не все данные могут иметь произвольное значение, но допустимо (как я понял) не указывать значение. Вот пропустить или изменить порядок тегов – нет? Потом собрать из «очищенного» WebP и «шаблона блока EXIF» файл с метаданными с помощью exiftool.

master_0K
()
Ответ на: комментарий от master_0K

Как-то Так

Из того файла, что выше выкладывал извлёк теги со значениями в json-формате (самый «человечный» оказался).

Далее в nano правил значения, удалял теги (можна :). Написал «от фонаря» временные метки – это было отброшено программой. Остальное вроде бы осталось…

[{
  "SourceFile": "Original.webp",
  "ExifToolVersion": 12.40,
  "FileName": "Original.webp",
  "Directory": ".",
  "FileSize": "94 KiB",
  "FileModifyDate": "2025:10:25 20:25:10+03:00",
  "FileAccessDate": "2025:10:25 20:25:10+03:00",
  "FileInodeChangeDate": "2025:10:25 20:25:10+03:00",
  "FilePermissions": "-rw-r--r--",
  "FileType": "WEBP",
  "FileTypeExtension": "webp",
  "MIMEType": "image/webp",
  "VP8Version": "0 (bicubic reconstruction, normal loop)",
  "ImageWidth": 600,
  "HorizontalScale": 0,
  "ImageHeight": 863,
  "VerticalScale": 0,
  "ExifByteOrder": "Big-endian (Motorola, MM)",
  "ImageDescription": "Обложка журнала Квант",
  "XResolution": 72,
  "YResolution": 72,
  "ResolutionUnit": "inches",
  "Software": "cwebp 1.2.2",
  "Artist": "",
  "ExifVersion": "0232",
  "ComponentsConfiguration": "Y, Cb, Cr, -",
  "UserComment": "Конвертировал картинку из темы про журнал 'Квант'/LOR. Значения проставил где-то реальные, где-то фонарные (время файла и другое)",
  "FlashpixVersion": "0100",
  "ColorSpace": "Uncalibrated",
  "ImageSize": "600x863",
  "Megapixels": 0.518
}]

Первая сложность собрать бинарный Exif… Получилось так exiftool -tagsFromFile original.json Original.exif

Теперь добавление к файлу WebP

  • сначала «делаем чанк EXIF» само слово «EXIF»+4 «двоичных» байта с размером (имеет порядок litle end) полученного файла exif +файл exif

  • дописываем «чанк» в конец файла WebP. Всё? Не-е-е-т ;) Теперь нужно поправить размер файла на размер «чанка» – это 4 «двоичных» байта (litle end) по смещению 0004h файла WebP. exiv2 без этого не видит «чанк EXIF», exiftool видит.

Ну теперь можно писать программу/скрипты по этому делу.

master_0K
()