Подробный гайд по TIFF: сжатие, порядок байтов, цветовая модель и кодировка метаданных
Коротко:
У файла .tiff нет текстовой кодировки вроде UTF-8 или Windows-1251 — это бинарный формат изображения.
Если под «кодировкой» вы имеете в виду:
- сжатие/метод кодирования данных — смотрите тег
Compression; - порядок байтов —
Byte Order/ endianness:IIилиMM; - цветовую модель —
PhotometricInterpretation,ColorSpace; - битность —
BitsPerSample; - кодировку текста внутри метаданных — EXIF/IPTC/XMP, это отдельная история.
1. Самый удобный способ: ExifTool
ExifTool показывает почти все теги TIFF.
Установка
Windows:
Скачайте exiftool.exe с официального сайта, переименуйте в exiftool.exe и добавьте папку в PATH.
macOS:
brew install exiftool
Linux (Debian/Ubuntu):
sudo apt install libimage-exiftool-perl
Fedora:
sudo dnf install perl-Image-ExifTool
Основные команды
Посмотреть всё:
exiftool image.tiff
Посмотреть всё с группами и короткими именами:
exiftool -a -G1 -s image.tiff
Только ключевые параметры TIFF:
exiftool -ByteOrder -Compression -PhotometricInterpretation -BitsPerSample -SamplesPerPixel -PlanarConfiguration -ColorSpace image.tiff
Пример вывода:
Byte Order : Little-endian (Intel, II)
Compression : LZW
Photometric Interpretation : RGB
Bits Per Sample : 8 8 8
Samples Per Pixel : 3
Planar Configuration : Chunky
Color Space : sRGB
Что это значит:
Byte Order:II— little-endian,MM— big-endian.Compression: метод сжатия:None,LZW,Deflate,JPEG,PackBits,CCITTи т.д.Photometric Interpretation:RGB,CMYK,Grayscale,Palette,YCbCr.Bits Per Sample: 8, 16, 1 и т.д.Samples Per Pixel: 1 — серый, 3 — RGB, 4 — CMYK/RGBA.Planar Configuration:ChunkyилиPlanar.
Если TIFF многстраничный:
exiftool -a -G1 -s -ee image.tiff
2. ImageMagick
Установка
Windows:
Установите ImageMagick с официального сайта.
macOS:
brew install imagemagick
Linux:
sudo apt install imagemagick
Команды
Подробный вывод:
identify -verbose image.tiff
Отфильтровать главное:
identify -verbose image.tiff | grep -iE "compression|endian|photometric|colorspace|depth|type|geometry|profile"
В Windows PowerShell можно так:
identify -verbose image.tiff | Select-String -Pattern "compression|endian|photometric|colorspace|depth|type|geometry|profile"
Кратко:
identify -format "%f\n format: %m\n compression: %[compression]\n colorspace: %[colorspace]\n depth: %[bit-depth]\n type: %[type]\n" image.tiff
3. libtiff / tiffinfo
Это «родная» утилита для TIFF.
Установка
Linux:
sudo apt install libtiff-tools
macOS:
brew install libtiff
Windows:
Через MSYS2, Cygwin или GnuWin32.
Команда
tiffinfo image.tiff
Пример вывода:
TIFF Directory at offset 0x8
Image Width: 1920
Image Length: 1080
Bits/Sample: 8
Compression Scheme: LZW
Photometric Interpretation: RGB
Samples/Pixel: 3
Planar Configuration: contiguous
Byte Order: little-endian
Если файл многстраничный, tiffinfo покажет все директории.
4. Быстрые команды: file, sips, mdls
Linux / macOS / Git Bash
file image.tiff
Показывает базовую информацию: TIFF, little/big-endian, иногда сжатие.
macOS
sips -g all image.tiff
Или конкретные параметры:
sips -g format -g space -g bitsPerSample -g samplesPerPixel -g hasAlpha -g profile image.tiff
Ещё:
mdls image.tiff
5. Python
Pillow
pip install pillow
from PIL import Image
im = Image.open("image.tiff")
print("mode:", im.mode)
print("size:", im.size)
print("info:", im.info)
print("TIFF tags:")
for tag, value in im.tag_v2.items():
print(tag, value)
tifffile — лучше для TIFF
pip install tifffile
import tifffile
with tifffile.TiffFile("image.tiff") as tif:
print("byteorder:", tif.byteorder) # '<' little-endian, '>' big-endian
for i, page in enumerate(tif.pages):
print(f"\n--- page {i} ---")
print("compression:", page.compression)
print("photometric:", page.photometric)
print("bitspersample:", page.bitspersample)
print("samplesperpixel:", page.samplesperpixel)
print("planarconfig:", page.planarconfig)
for tag in page.tags.values():
print(tag.name, tag.value)
6. Hex-редактор: ручная проверка
Откройте TIFF в HxD, 010 Editor, ImHex или другом hex-редакторе.
Первые байты:
49 49 2A 00— little-endian, II4D 4D 00 2A— big-endian, MM
2A — это магическое число TIFF.
Основные теги TIFF:
| Код тега | Название | Что означает |
|---|---|---|
0x0100 |
ImageWidth | ширина |
0x0101 |
ImageLength | высота |
0x0102 |
BitsPerSample | бит на канал |
0x0103 |
Compression | сжатие |
0x0106 |
PhotometricInterpretation | цветовая модель |
0x0115 |
SamplesPerPixel | число каналов |
0x011C |
PlanarConfiguration | chunky/planar |
0x014A |
SubIFDs | дополнительные страницы |
Значения Compression:
| Код | Сжатие |
|---|---|
| 1 | None |
| 2 | CCITT 1D |
| 3 | CCITT Group 3 |
| 4 | CCITT Group 4 |
| 5 | LZW |
| 6 | JPEG (old) |
| 7 | JPEG |
| 8 | Deflate / ZIP |
| 32773 | PackBits |
| 32946 | Deflate |
| 50000 | ZSTD |
| 50001 | WebP |
Значения PhotometricInterpretation:
| Код | Цвет |
|---|---|
| 0 | WhiteIsZero |
| 1 | BlackIsZero |
| 2 | RGB |
| 3 | Palette |
| 4 | Transparency Mask |
| 5 | CMYK |
| 6 | YCbCr |
| 8 | CIELab |
7. Если нужна именно текстовая кодировка внутри TIFF
TIFF сам по себе текст не хранит.
Но внутри могут быть метаданные:
- EXIF — обычно ASCII.
- IPTC — может иметь
CodedCharacterSet. - XMP — обычно UTF-8.
Проверить через ExifTool:
exiftool -a -G1 -s -EXIF:All -IPTC:All -XMP:All image.tiff
Кодировка IPTC:
exiftool -IPTC:CodedCharacterSet image.tiff
Если выводит UTF8 — текст в UTF-8. Если пусто — часто Latin-1 / Windows-1252.
Извлечь XMP:
exiftool -b -XMP image.tiff > xmp.xml
Откройте xmp.xml и посмотрите начало:
<?xpacket begin="..."?>
<?xml version="1.0" encoding="UTF-8"?>
Если указано encoding="UTF-8" — XMP в UTF-8.
8. GUI-варианты
Windows:
- IrfanView: откройте файл, нажмите
IилиFile → Information. - XnView MP: правый клик →
Properties→Metadata. - ExifToolGUI — графическая оболочка для ExifTool.
macOS:
- Preview:
Cmd+I→ Inspector. - ExifTool через Terminal.
sips -g all image.tiff.
Linux:
- GIMP:
Image → Image Properties. - Gwenview / digiKam: панель метаданных.
- ExifTool / tiffinfo в терминале.
Photoshop:
File → File Info— метаданные.Image → Mode— цветовая модель.- Но метод сжатия TIFF Photoshop показывает не всегда.
Краткий рецепт
- Установите ExifTool.
- Выполните:
exiftool -a -G1 -s image.tiff
- Смотрите:
Byte Order— порядок байтов;Compression— метод сжатия/кодирования;Photometric Interpretation— цветовая модель;Bits Per Sample,Samples Per Pixel— битность и каналы;Color Space— sRGB, Adobe RGB, CMYK и т.д.
- Если нужен текст внутри метаданных:
exiftool -a -G1 -s -EXIF:All -IPTC:All -XMP:All image.tiff
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.