linux - 如何水平和垂直复制、粘贴和翻转多张图像?

标签 linux netpbm

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

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

谢谢。

最佳答案

以下 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。

这应该生成中间图像 伊尔.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

关于linux - 如何水平和垂直复制、粘贴和翻转多张图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47424670/

相关文章:

sql-server - 彻底删除 mssql linux

c++ - 反转 PBM 图像的位 while vs for 循环

c - C中大图像和窄图像的转置

image - 图像中的额外数据 (PPM/PAM/PNM)

linux - 使用shell脚本从文件中提取指定的行号

python - TypeError : 'NoneType' object is unsubscriptable in cv2. 归一化

linux - Base64解码有时在结果末尾有 "%"。是应该的结果吗?有什么解决办法吗?

r - 写入连接时出错 - 与 R 并行化 - Linux/Ubuntu 问题