Я не знаю, почему ImageMagick не может правильно интерпретировать файл, но я могу показать вам, как заставить его работать.
Вам необходимо найти в своем файле высоту, ширину и тип данных. вашего изображения, вы можете сделать это следующим образом:
grep -E "LINES|LINE_SAMPLES|BITS" EW0220149939G.IMG
LINES = 1024
LINE_SAMPLES = 1024
SAMPLE_BITS = 8
Это означает, что ваше изображение имеет размер 1024x1024 и 8 бит / сэмпл (1 байт). Затем вам нужно взять это количество байтов из хвостовой части файла и передать их в ImageMagick. Итак, вам нужны последние 1024x1024 байта, которые вы можете получить с tail
или gtail
(хвост GNU), когда вы на Ма c.
gtail -c $((10241)) EW0220149939G.IMG | convert -depth 8 -size 1024x1024 gray:- result.jpg
Если ваше изображение 16-битное, как в вашем другом вопросе, вам нужно использовать:
gtail -c $((1024*1024*2)) 16-BIT-IMAGE.IMG | convert -depth 16 -size 1024x1024 gray:- result.jpg
Если вам не нравится использовать gtail
для Получив последний мегабайт, вы также можете указать смещение от начала файла, которое сообщает ImageMagick, где начинаются пиксельные данные. Итак, сначала вам нужен размер заголовка:
grep -E "RECORD_BYTES|LABEL_RECORDS" EW*IMG
RECORD_BYTES = 1024
LABEL_RECORDS = 0007
*1024* Это означает, что нам нужно пропустить 1024 * 7 байт, чтобы получить изображение, поэтому команда:
convert -size 1024x1024+$((1024*7)) -depth 8 gray:EW0220149939G.IMG result.jpg