Разобрать размер изображения по команде идентификации - PullRequest
1 голос
/ 09 февраля 2012

с помощью команды идентификации я получаю некоторую информацию об изображениях, и это выглядит так

my_image.png PNG 154x78 154x78 + 0 + 0 8-битный DirectClass 946B 0.000u 0: 00.000

размер изображения 154x78

, но я не знаю, как поместить это значение в переменные

w=154 #But I want this 154 to be somehow parsed...
h=78

Обратите внимание, что этот скрипт для разбора должен работать для всех видов изображенийне только для расширения .png

также, если возможно, я хочу знать, что 0 + 0 в этой строке 154x78 + 0 + 0

Спасибо

Ответы [ 2 ]

6 голосов
/ 09 февраля 2012

Это сложный случай для написания регулярного выражения, поскольку мы не знаем, будет ли имя файла содержать пробелы или иметь расширение или нет.Проще было бы использовать переключатель format для identify:

identify -format '%w' filename.jpg
3360
identify -format '%h' filename.jpg
1080

В bash вы должны написать:

W=`identify -format '%w' filename.jpg`
H=`identify -format '%h' filename.jpg`

+0+0 - это смещение для изображения, +0+0 означает только начало с 0 на оси x и 0 на оси y.Вы можете прочитать больше в руководстве по imagemagick .

Под редакцией Марка Сетчелла

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

Поскольку ОП использует bash, он может получить ширину и высоту за один разбез многократного открытия изображения, например:

read w h < <(identify -format "%w %h" filename.jpg)

вместе со всем, что угодно, например с цветовым пространством и количеством уникальных цветов:

read w h c u < <(identify -format "%w %h %[colorspace] %k" filename.jpg)
0 голосов
/ 09 февраля 2012

Использование awk с несколькими разделителями (пробел и x) должно работать

Вы можете попробовать с w = $ (.....), если обратные пометки не работают.

w = `awk -F" |x" '{print $3}'`
h = `awk -F" |x" '{print $4}'`

Вам необходимо вписать вывод команды идентификатора в приведенное выше, либо предварительно сохранив его в файле и передав его, либо включив вызов.

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