Есть ли команда оболочки, которая возвращает размер изображения в пикселях?
Я пытаюсь создать анимированный GIF, начиная с разных картинок разных размеров, используя convert
(например convert -delay 50 1.gif 2.gif -loop 0 animated.gif
).
Проблема заключается в том, что конвертация просто перекрывает изображения, используя размер первого изображения в качестве размера анимированного GIF, и, поскольку они имеют разные размеры, в результате получается небольшой беспорядок, причем биты старых кадров отображаются под новыми.
Ответы:
нашел решение:
identify
часть пакета imagemagick делает именно то, что мне нужноисточник
identify imagename.ico
?Like todour.ico[0] ICO 32x32 32x32+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[1] ICO 16x16 16x16+0+0 4-bit sRGB 0.000u 0:00.000
todour.ico[2] ICO 48x48 48x48+0+0 8-bit sRGB 0.000u 0:00.000
Вместо того, чтобы анализировать выходные данные
identify
визуально или текстовыми утилитами, вы можете использовать его-format
опцию для вывода ширины и высоты в любом формате, который вам больше подходит. Например:Список свойств изображения , которые вы можете выход можно найти на этой странице , но вопрос здесь, кажется , все , что нужно ,
%w
и%h
, которые дают ширину и высоту изображения в, соответственно, в пикселях.Гибкость, предоставленная
-format
мне, пригодилась мне в поиске самых больших изображений в пикселях, выводя%[fx:w*h]
для ряда изображений и сортируя выходные данные.Возможно, вы захотите указать эту
-ping
опцию, если вы обрабатываете много изображений, используете более сложные побеги и хотите убедиться, что программа не тратит время на загрузку всех изображений. С простыми побегами,-ping
должно быть по умолчанию. Более подробную информацию о выборе между-ping
и+ping
можно найти здесь .источник
Вы можете просто использовать команду «file» для получения необходимой информации:
источник
file taylor-swift-money-makers-990.jpg
->taylor-swift-money-makers-990.jpg: JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJ"
Используйте,
identify
чтобы увидеть размеры:Извлечь значение через
cut | sed
поле 3:Назначить переменной:
источник
И то,
display
и другоеfile
довольно медленное, и может поставить на колени даже вполне работоспособные системы, работающие со множеством файлов. Небольшой тест:Считывая только необходимые байты, эта операция может быть значительно ускорена.
Вот pngsize:
Этот метод намного быстрее, чем использование библиотеки, которая загружает PNG вперед, назад и вбок только для того, чтобы получить размер изображения: P (внимательно рассмотрите код перед загрузкой в каталог, полный произвольных PNG, конечно.)
Пользы кода inet.h для Htonl () для де- Endian -ize упорядочения байт заголовка.
источник
Вы также можете попробовать GraphicsMagick , который является хорошо поддерживаемым форком ImageMagick, используемым, например, на Flickr и Etsy:
Это быстрее, чем идентифицирует ImageMagick (в моих тестах примерно в два раза).
источник
Это был полезный фрагмент (я не писал), который возвращает размеры для каждого png и jpg в папке:
источник
Для таких как я, которые хотят размер в мегапикселях:
источник