用于切片图像的 Oneliner?

用于切片图像的 Oneliner?

我正在寻找一个 oneliner 命令,可以将图像切成给定的比例。

假设输入是文件名和切片尺寸。是否有任何标准的命令行工具可以实现此目的?我尝试了 ImageMagick 但没有成功,因为它极大地混淆了我的图像(它很大,大部分是透明的,png)。

答案1

我知道这个问题有点老了,但我编写了使用 JRW 解决方案的脚本。脚本将图像文件分割成一系列给定大小的图像:

#!/bin/bash
FILE=$1
FILENOEXT=${FILE%.*}
SLICEWIDTH=$2
WIDTH=`file $FILE | cut -f5 -d" "`
NUMOFSLICES=`echo "scale=2; $WIDTH/$SLICEWIDTH+1" | bc`
for i in `seq $NUMOFSLICES`
do
    LAST=$(($SLICEWIDTH * $i - $SLICEWIDTH))
    pngtopnm $FILE | pnmcut -left $LAST -width $SLICEWIDTH | pnmtopng > cropped-$FILENOEXT-$i.png
done
pngtopnm $FILE | pnmcut -left $LAST | pnmtopng > cropped-$FILENOEXT-$i.png

参数一是文件名和块的第二宽度。在大多数情况下,脚本在最后一个块上返回错误,但在最后一个块再次在循环外被裁剪之后,一切都正常......:)

答案2

网络PBM工具可以做到这一点。如果您正在谈论裁剪它:

$ pngtopnm image.png | pnmcut -width 500 -height 500 | pnmtopng > image_cropped.png

如果你想缩放它使用 pnmscale。

相关内容