Linux: Как объединить две картинки в GIMP с Python -Fu - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно выполнить sh следующую задачу: два квадратных изображения png одинакового размера должны быть соединены рядом и экспортированы как комбинированное изображение. Это нужно сделать с сотнями пар в папке с окончаниями «_1» и «_2»

Я думаю, что это можно сделать в GIMP с Pytho-Fu, но пытаюсь понять основы написания скриптов для GIMP немного утомляет при плотном графике, и мне действительно нужно решение для этой единственной задачи. Я был бы очень признателен, если бы вы указали мне правильное направление с этим.

(Если есть более простое решение, чем использование GIMP, сообщите мне. Он должен работать на Linux и, в идеале, иметь исполняется от bash.

объединение двух картинок

Ответы [ 2 ]

1 голос
/ 02 августа 2020

С ImageMagick вы можете l oop по каждой паре и просто выполните:

convert image_1.png image_2.png +append image_1_2.png

См.

https://imagemagick.org/Usage/layers/#append


Если вам нужно пространство между ними, используйте + smu sh X, где X - это количество места, которое вы хотите. Если вы хотите, чтобы они перекрывались, используйте отрицательное значение для X. Вы можете установить цвет пространства, используя -background color.

См. https://imagemagick.org/script/command-line-options.php#smush

0 голосов
/ 02 августа 2020

После рекомендации xenoid: я обнаружил, что синтаксис и документация ImageMagick ужасный беспорядок менее оптимален, поэтому я расскажу, как я это сделал:

с Ubuntu 18.04.04 :

montage -tile x1 -geometry +0+0  input1.png input2.png output.png

Всё это (наверное, никому не интересно ...)

#! /bin/bash

input="./Input/"
output="./Output/"

# add to output filename
prefix="CIF_"
postfix="_2"

# get file list
readarray -d '' RRA < <(find $input -regextype posix-egrep -regex '(.*)?_1_cr\.png$' -print0)
echo "Merging ${#RRA[@]} images.."

# remove directory from filename
RRA=( "${RRA[@]##*/}" )

# strip last part of filename: "_1_cr.png"
RRA=( "${RRA[@]/%_1_cr\.png/}" )

# merge images
for fall in "${RRA[@]}";do

    # check if there are two images to merge for current case
    if test -f "$input${fall}_2_cr.png"; then
        echo "${fall}"
        montage -tile x1  -tile-offset +10 -geometry +0+0  -border +20+20 -bordercolor white $input${fall}_1_cr.png $input${fall}_2_cr.png $output$prefix${fall}$postfix.png
    else
        echo "${fall} - no second image found"
    fi
    
done 
...