Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: ImageMagick; identify -verbose *.png | grep 'Print size'. См, мм как получить ?  (Прочитано 959 раз)

0 Пользователей и 1 Гость просматривают эту тему.

adawdp

  • Автор темы
  • Гость
— Здр.Все!
— Прекрасная программа ImageMagick очень многие вещи удобно делать. Но вот столкнулся с проблемой получать размеры изображений в метрической системе…
— Понятное дело, что исторически сложились эти дюймы, в Канаде принята метрическая система, но в магазине большими цифрами за фунт цена и очень маленькими где-то в углу за килограмм :), а рост только в больнице в сантиметрах, а так футы и дюймы, упорное нежелание идти в ногу со всем миром…
— Здесь же в компьютерной сфере эти пресловутые точки на дюйм портят всю картину :( , от них и идёт вся эта „дюймиизация“.
— Есть такие команды
Код: (=) [Выделить]
identify -verbose *.png | grep 'Print size'
identify -format "%[fx:w/72] by %[fx:h/72]" *.png
можно и другие модификации сочинить, но всё в дюймах, а иногда нужны сантиметры, у меня, конечно и специальный калькулятор для перевода всего этого галонно-пинто-фунто-футо-дюймового безобразия  в „человеческие :)“ единицы есть, но вот хотелось бы сразу миллиметров или сантиметров от identify.
— Может кто знает, man identify ничего не говорит.
— Или перенаправлять вывод в sed
Код: (=) [Выделить]
identify -verbose *.png | grep 'Print size'|sed ………и там что-то сочинять используя sqrt или ещё что-то…

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Если нужны вычисления, то проще awk , а не sed … (если будут трудности — давай исходный формат и требуемый, помогу)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

adawdp

  • Автор темы
  • Гость
Azure, Вы мне и так помогали как никто :), не буду далее распространяться, чтобы не показаться избыточно лицемерным!
Код: (=) [Выделить]
mixail@mixail-Inspiron-530s:~/Рабочий стол$ identify -verbose IMG_0023.JPG | grep -A 2 Geometry
  Geometry: 2048x1536+0+0
  Resolution: 180x180
  Print size: 11.3778x8.53333
mixail@mixail-Inspiron-530s:~/Рабочий стол$
— Так вот Print size: 11.3778x8.53333 ведь в дюймах, а хотелось бы видеть „и\или“, лучше „и“ и в миллиметрах, сантиметрах, но лучше в миллиметрах.
— Диагональ монитора Вы Sed применяли…
Код: (=) [Выделить]
xrandr | sed -n '2 s/.* \([0-9]\+\)mm x \([0-9]\+\)mm.*/(sqrt(\1^2+\2^2))\/25.4/p' | bc
« Последнее редактирование: 13 Июня 2014, 18:31:09 от adawdp »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Код: (Bash) [Выделить]
identify -verbose IMG_0023.JPG | grep -A 2 Geometry | \
sed "/size/s/x/ /" | awk '! /size/ { print } ; /size/ { print "  "$1,$2,$3/0.254"x"$4/0.254 } '
или
Код: (Bash) [Выделить]
identify -verbose IMG_0023.JPG | grep -A 2 Geometry | \
sed "/size/s/:\s*/&x/" | awk -Fx '! /size/ { print } ; /size/ { print $1 $2/0.254"x"$3/0.254 } '
« Последнее редактирование: 14 Июня 2014, 23:31:34 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

adawdp

  • Автор темы
  • Гость
Azure, спасибо, сам бы я без предварительной многодневной подготовки такое бы не сочинил :(

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Чтоб не забывать, можно ещё добавить обозначение миллиметров
Код: (Bash) [Выделить]
identify -verbose IMG_0023.JPG | grep -A 2 Geometry | \
  sed "/size/s/:\s*/&x/" | awk -Fx '! /size/ ; /size/ { CONVFMT = "%.1fmm"; print $1 $2/0.254"x"$3/0.254 }'
« Последнее редактирование: 15 Июня 2014, 18:10:38 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

adawdp

  • Автор темы
  • Гость
— О теперь я разовью идею,так я умею :) где в готовую конструкцию нолик отнять-добавить, где миллиметр на сантиметр заменить! :) И уже чувствуешь себя программистом!
— Спасибо ещё раз, Azure !
Код: (=) [Выделить]
mixail@mixail-Inspiron-530s:~/Рабочий стол$ identify -verbose 01.JPG | grep -A 2 Geometry
  Geometry: 2048x1536+0+0
  Resolution: 180x180
  Print size: 11.3778x8.53333
mixail@mixail-Inspiron-530s:~/Рабочий стол$ identify -verbose 01.JPG | grep -A 2 Geometry | \
>     sed "/size/s/:\s*/&x/" | awk -Fx '! /size/ { print } ; /size/ { CONVFMT = "%.1f mm"; print $1 $2*25.4" x "$3*25.4 } '
  Geometry: 2048x1536+0+0
  Resolution: 180x180
  Print size: 289.0 mm x 216.7 mm
mixail@mixail-Inspiron-530s:~/Рабочий стол$
— Там вроде как не делить а умножать нужно, но это уже детали которые решаются при „отладке“ :) !
« Последнее редактирование: 15 Июня 2014, 17:08:09 от adawdp »

 

Страница сгенерирована за 0.049 секунд. Запросов: 25.