Администрирование FreeBSD, Linux, ... Утилиты для обработки изображений Linux Fri, October 10 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Утилиты для обработки изображений Linux Печать
Добавил(а) microsin   

Здесь приведен краткий обзор консольных утилит, которые позволяют получить информацию о растровой картинке RAW, BMP и других форматов:

- метод кодирования/сжатия
- количество цветов
- разрешение по горизонтали и вертикали
- другая информация, которая может понадобиться для декодирования в растр BMP.

Вот основные консольные утилиты Ubuntu для анализа растровых изображений:

1. file (базовая идентификация)

file image.bmp
file image.raw

Выведет что-то наподобие: `image.bmp: PC bitmap, Windows 3.x format, 640 x 480`. Пример вывода информации по картинке RAW:

$ file frame.raw
frame.raw: JPEG image data, baseline, precision 8, 640x480, components 3

2. identify (ImageMagick) - самый мощный инструмент.

Установка:

$ sudo apt install imagemagick

Использование:

$ identify -verbose image.bmp
$ identify -format "%m %w %h %z %C" image.bmp

Пример вывода:

Format: BMP (Microsoft Windows bitmap)
Mime type: image/bmp
Geometry: 640x480
Depth: 8-bit
Colors: 256
Compression: None
Filesize: 922KB

3. exiftool (метаданные)

Установка:

$ sudo apt install libimage-exiftool-perl

Использование:

exiftool image.bmp
exiftool image.raw

Пример вывода:

ExifTool Version Number         : 12.76
File Name                       : image.raw
Directory                       : .
File Size                       : 17 kB
File Modification Date/Time     : 2025:10:08 11:55:19+03:00
File Access Date/Time           : 2025:10:08 11:55:37+03:00
File Inode Change Date/Time     : 2025:10:08 11:55:19+03:00
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
Image Width                     : 640
Image Height                    : 480
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:2 (2 1)
Image Size                      : 640x480
Megapixels                      : 0.307

4. ffprobe (FFmpeg) - отлично подходит для RAW.

Установка:

$ sudo apt install ffmpeg

Пример для BMP:

$ ffprobe image.bmp

Для RAW с указанием параметров:

$ ffprobe -f rawvideo -pixel_format yuyv422 -video_size 640x480 image.raw

5. bmptopnm + pnminfo (Netpbm)

Этот вариант подойдет только для формата BMP. Установка:

$ sudo apt install netpbm

Анализ BMP:

$ bmptopnm image.bmp | pnminfo

6. gdalinfo (для данных геолокации и растров)

Установка:

$ sudo apt install gdal-bin

Пример использования:

$ gdalinfo image.bmp

[Практический пример скрипта для анализа]

Для BMP файлов:

#!/bin/bash
analyze_bmp() {
local file="$1"

echo "=== Анализ BMP: $file ==="

# 1. Базовая информация
echo "1. file:"
file "$file"
echo

# 2. Детальная информация ImageMagick
if command -v identify &> /dev/null; then
echo "2. identify -verbose:"
identify -verbose "$file" | grep -E "(Format|Geometry|Depth|Colors|Compression|Filesize)"
echo
fi

# 3. Метаданные
if command -v exiftool &> /dev/null; then
echo "3. exiftool:"
exiftool "$file" | grep -E "(Image Size|Bit Depth|Compression|Color)"
echo
fi
}
analyze_bmp "$1"

Для RAW файлов:

#!/bin/bash
analyze_raw() {
local file="$1"
local width="${2:-640}"
local height="${3:-480}"
local format="${4:-yuyv422}"

echo "=== Анализ RAW: $file ==="
echo "Предполагаемые параметры: ${width}x${height} $format"
echo

# 1. Размер файла
echo "1. Размер файла:"
ls -lh "$file"
echo " Байт: $(stat -c%s "$file")"
echo " Расчетные кадры: $(($(stat -c%s "$file") / (width * height * 2)))"
echo

# 2. HEX-дамп заголовка
echo "2. HEX-дамп (первые 64 байта):"
hexdump -C "$file" | head -5
echo

# 3. Попытка анализа через ffprobe
if command -v ffprobe &> /dev/null; then
echo "3. ffprobe анализ:"
ffprobe -f rawvideo -pixel_format "$format" -video_size "${width}x${height}" \
-i "$file" 2>&1 | grep -E "(Stream|Video)"
echo
fi
}
analyze_raw "$1" "$2" "$3" "$4"

Универсальный скрипт для анализа:

#!/bin/bash
analyze_image() {
local file="$1"

if [ ! -f "$file" ]; then
echo "Файл не найден: $file"
return 1
fi

echo "========================================="
echo "Анализ изображения: $file"
echo "========================================="

# Определяем тип файла по расширению
extension="${file##*.}"

case "${extension,,}" in
bmp)
analyze_bmp "$file"
;;
raw|yuv|rgb)
analyze_raw "$file"
;;
*)
echo "Используется общий анализ..."
file "$file"
if command -v identify &> /dev/null; then
identify -verbose "$file" | head -20
fi
;;
esac
}

# Функции analyze_bmp и analyze_raw из примеров выше
analyze_image "$1"

Использование утилит. Для BMP:

$ ./analyze.sh image.bmp

Для RAW с параметрами:

$ ./analyze.sh frame.raw 1920 1080 yuyv422

Быстрый анализ через identify:

$ identify -format "Формат: %m\nРазмер: %w x %h\nГлубина: %z-bit\nЦвета: \
 %k\nСжатие: %C\nРазмер: %b" image.bmp

Рекомендации:

1. Для BMP - используйте identify -verbose + exiftool
2. Для RAW - используйте ffprobe с указанием параметров + hexdump для анализа структуры
3. Для быстрой проверки - file + identify -format

ImageMagick (identify) - самый универсальный инструмент для растровой графики, однако он не понимает RAW. ИМХО для вывода информации о картинках RAW лучше всего подойдет exiftool.

 

 

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


Защитный код
Обновить

Top of Page