Как предотвратить преобразование команды imagemagick в масштабирование изображения?

Я пытаюсь сделать спрайт-листы из анимированных GIF-файлов. Спрайты для моего GPS, и каждый кадр должен быть точно 80x80 пикселей.

Я использовал эту команду:

convert -resize 80x80 input.gif  g.png

который даст вам N кадров в gif, перечисленных как: gN.png.

Что я понял, используя силу GIMP, так это то, что изображения были масштабированы в какой-то момент, а это то, чего я не хочу. На прилагаемом рисунке показан раздел размером 80x80 пикселей, где следующий спрайт перекрывает область, которая должна быть только первой.

Самая следующая строка в моем сценарии:

convert +append g-*.png $outputFile

который может иметь роль в этом... Я не уверен.

Полный исходный код скрипта:

#!/bin/bash
#set -vx
# Takes an image via an argument, converts it to the sprite style my gps takes.
# PNG image must be exactly 2880x150 or 2881x160 pixels in size. individual sprites, ar 80x80 px
mkdir -p test2
rm test2/*.png 

n=`identify -format "%n\n" $1 | head -1`
m=`expr $n / 2`
outputFile=out`date +%s`.png
#outputFile=out.png
echo  "N: " + $n
echo  "M: " + $m

convert -resize 80x80 $1  test2/g.png
convert +append test2/g-*.png $outputFile
#convert -resize 2880x150 $outputFile
#montage test2/g-$m.png $outputFile

1 ответ

Хорошо, я думаю, что получил, благодаря этому посту об обмене стека Unix & Linux и чтению о функции расширения на веб-сайте imagemagick.

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

Я изменил первую команду преобразования на:

convert -background none -extent 80x80 $1  test2/g.png

мой вывод теперь соответствует требованиям макета:

Другие вопросы по тегам