Изменение типа сжатия изображения TIFF с сохранением всех тегов

Существует ли инструмент командной строки, который изменит тип сжатия, используемый в изображении TIFF, не отбрасывая неизвестные теги? Imagemagick 7.1.1-36 отбрасывает теги GeoTIFF, когда я делаю следующее, несмотря на то, что этот пост подразумевает обратное.

% magick USGS_13_n35w119_20240207.tif -compress Zip USGS_13_n35w119_20240207zip.tif

Вот пример изображения. Я пытаюсь сделать это на MacOS.

У вас должна быть возможность изменить сжатие с помощью ImageMagick, а затем использовать exiftool -TagsFromFile для копирования тегов. См. exiftool.org/forum/index.php?topic=10189.0

Mark Setchell 07.08.2024 09:22

Опубликуйте здесь свой tiff-файл, чтобы я мог протестировать его или сообщить об этом на веб-сайте Imagemagick GIF. Какая у вас ОС/платформа?

fmw42 07.08.2024 17:30

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

Mad Physicist 08.08.2024 01:51

Ссылка на ваше изображение дает «Доступ запрещен».

Mark Setchell 08.08.2024 08:54

Вы можете просто перетащить изображение со своего рабочего стола, оно будет подхвачено хостом изображений SE.

Jiminy Cricket. 08.08.2024 09:52

@MadPhysicist Довольно сложно рассматривать «Есть ли инструмент командной строки…» как нечто иное, чем «Вопрос с просьбой порекомендовать или найти инструмент» — то есть не по теме.

Dan Mašek 08.08.2024 14:12

@ДанМашек. Не обязательно. ОП запрашивает очень конкретную операцию, явно провел какое-то исследование, что-то попробовал и имеет конфликт с текущим уровнем знаний. Если бы я писал для этого конвейер bash, я бы думал об этом так же, как о вызове библиотеки Python.

Mad Physicist 08.08.2024 17:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

ТЛ,ДР

Сожмите с помощью ImageMagick и скопируйте теги пересылки из исходного файла с помощью exiftool:

# Compress with ImageMagick
magick INPUT.TIF -compress LZW result.tif
# Copy forward tags from original
exiftool -TagsFromFile INPUT.TIF result.tif

Или вы можете сделать однострочник:

magick INPUT.TIF -compress lzw TIFF:- | exiftool -TagsFromFile INPUT.TIF - > result.tif

Оригинальный ответ

Я скачал файл с тегами GeoTIFF отсюда . Затем я сжал его с помощью LZW с помощью ImageMagick:

magick SP27GTIF.TIF -compress LZW new.tif

magick: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
magick: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
magick: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
magick: Unknown field with tag 34737 (0x87b1) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.

Затем я проверил файл new.tif и обнаружил, что теги отсутствуют. Я вернул теги обратно, скопировав вперед из исходного файла с помощью exiftoool:

exiftool -TagsFromFile SP27GTIF.TIF new.tif

И, при повторной проверке, исходные теги GeoTIFF (из SP27GTIF.TIF) присутствовали в изображении, сжатом LZW new.tif.

identify -verbose new.tif | grep -Ei "tag|LZW"

  Format: TIFF (Tagged Image File Format)
identify: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
identify: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
identify: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
identify: Unknown field with tag 34737 (0x87b1) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/945.
  Compression: LZW

Проверка с помощью tiffinfo дает, среди прочего:

  Tag 33550: 32.800000,32.800000,0.000000
  Tag 33922: 0.000000,0.000000,0.000000,681480.000000,1913050.000000,0.000000
  Tag 34735: 1,0,2,5,1024,0,1,1,1025,0,1,1,1026,34737,24,0,2049,34737,23,24,3072,0,1,26771
  Tag 34737: State Plane NAD27, Feet|NAD27 in Feet default"|
  Predictor: horizontal differencing 2 (0x2)

Это здорово, спасибо. Хотя я пытаюсь перейти от lzw к zip/выкачиванию.

Rick 10.08.2024 02:43

Коллега предложил gdal_translate для изображений GeoTIFF. После некоторых экспериментов я остановился на следующем:

% gdal_translate -co compress=deflate -co tiled=yes -co blockxsize=512 -co blockysize=512 -co num_threads=8 

По умолчанию gdal_translate изменит мозаичное изображение на изображение, состоящее из полос, поэтому вам нужно указать это явно. Я думаю, что ответ Марка лучше, поскольку он должен сохранять все теги, а не только те, о которых знает GDAL.

Другие вопросы по теме