如何水平和垂直复制,粘贴和翻转许多图像?

时间:2017-11-21 23:51:48

标签: linux netpbm

基本上,我有500多张图片需要以完全相同的方式修改。我有像Image input这样的图片。

我需要复制图像的左侧,更准确地说是尺寸为645x999像素的矩形,粘贴它,对角翻转并在右侧移动它。我可以使用任何图像编辑器手动执行此操作,但我想知道是否可以创建程序(最好是在c ++中),或输入可以为我执行此操作的命令。我希望得到这个Image output,任何建议都会有很大的帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

以下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 enter image description here

ir.png enter image description here

和最终图片i.png

enter image description here

要对一系列文件执行此操作,以下脚本将起作用,其中变量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