imageMagick объединение команд? - PullRequest
0 голосов
/ 21 октября 2011

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

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

Первое изображение, которое вы видите, это исходный график. 2-е и 3-е изображения - это то, что я бы назвал неудачными, потому что в:

2 Фон обрезается в результате попытки получить фон и размеры графика в соответствовать правильно.

3, где я не добавил черный фон, видно, что у текста нет фона

4-е изображение - это фон, который я использовал в примерах.

То, к чему я стремлюсь, - это график с фоном, масштабированным, чтобы соответствовать, но не растянутым или сдавленным, чтобы соответствовать. Фоновый файл всегда будет иметь большие размеры, чем график.

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

По сути, мне нужно масштабировать фоновое изображение до тех пор, пока оно не заполнит размер графика, обрезать лишнее.

Кто-нибудь поможет?


#!/bin/bash

if [ -z "$3" ]
then
    echo "usage: $0 background.png foreground.png output.png"
    exit 1
fi


orig_size=`identify -format '%wx%h' "$2"`
bg_size=`identify -format '%wx%h' "$1"`


# make a black background size of graph
convert -size $orig_size xc:black ./thisblack.png

# resize background image to size of graph
# this might result in areas with no background
convert -resize $orig_size "$1" "_$1"

# make the graph the background to force size
# by merging the graph and resized background.
# By using the graph as first parameter the size
# is always correct (even though you can't see
# the graph in this image)
convert -composite "$2" "_$1" -depth 8 "_$3"

# overlay graph onto the composite background and graph
# so we can see the graph again
convert -size $orig_size -composite "_$3" "$2" -depth 8 "__$3"

# merge the black and final graph for end image and fill 
# areas with no background with black.
convert -composite "thisblack.png" "__$3" -depth 8 "$3"

# Clean up
rm -f "__$3"
rm -f "_$3"
rm -f "_$1"
rm -f thisblack.png

1 Ответ

1 голос
/ 24 октября 2011

Если я правильно понял, вы хотите заполнить исходное изображение фоном наименьшего размера и обрезать расширяющиеся области.Вы можете добиться этого, используя -resize с опцией ^ и -extent:

convert background.jpg -resize 100x100^ -extent 100x100 background_resize.jpg

http://www.imagemagick.org/Usage/resize/#fill

...