Как копировать, вставлять и переворачивать по горизонтали и вертикали много изображений?
По сути, у меня есть 500+ изображений, которые мне нужно изменить точно так же. У меня есть такие изображения ,
И мне нужно скопировать левую сторону изображения, точнее прямоугольник, размеры которого составляют 645x999 пикселей, вставить его, перевернуть по диагонали и переместить на правую сторону. Я мог бы сделать это вручную с помощью любого графического редактора, но я хочу знать, могу ли я создать программу (желательно на C++) или ввести команду, которая может сделать это для меня. Я хочу получить это Любой совет будет очень полезен.
Спасибо.
1 ответ
Следующие команды netpbm показывают, как сделать это для одного файла
cat cwxAr.png | pngtopnm | pamcut -width 670 -height 999 | pnmtopng > il.png
cat il.png | pngtopnm | pnmflip -tb | pnmflip -lr | pnmtopng > ir.png
cat il.png | pngtopnm > il.pnm
cat ir.png | pngtopnm > ir.pnm
pnmcat -lr il.pnm ir.pnm | pnmtopng > i.png
примечание - для получения выходного изображения, которое приведено в примере, ширина составляет 670 пикселей, а не 645.
Это должно генерировать промежуточные изображения il.png
и окончательное изображение i.png
Для этого для ряда файлов будет работать следующий скрипт, в котором переменная flist задает список файлов для обработки
#!/bin/bash -f
flist=( cwxAr-0 cwxAr-1 cwxAr-2 )
outpref=( cwxAr-out )
nout=0
for f in ${flist[*]} ; do
fout=`printf "%s-%4.4d.png" ${outpref} ${nout}`
echo "Reading "${f}", writing ",${fout}
cat ${f}.png | pngtopnm | pamcut -width 670 -height 999 | pnmtopng > il.png
cat il.png | pngtopnm | pnmflip -tb | pnmflip -lr | pnmtopng > ir.png
cat ir.png | pngtopnm > ir.pnm
cat il.png | pngtopnm > il.pnm
pnmcat -lr il.pnm ir.pnm | pnmtopng > ${fout}
nout=$(( nout +1 ))
done