001.jpg
番号付きの本のスキャンコピーを含むフォルダがあります。092.jpg
スキャンは、本の2ページを一緒にスキャンします。私が望むのは、中間から垂直に2つの部分に分割し、001.jpg
ファイル名をから184.jpg
。したがって、最初はsum001.jpg
に分割されます。問題を回避するには、ターゲットファイルを別のディレクトリに書き込む必要があります。001.jpg
002.jpg
Imagemagickがこれを行うことができることがわかりました。しかし、これらすべての画像を一括処理するには、それを管理するための別のツールが必要だと思います。
誰でもこの問題を解決するのに役立ちますか?
答え1
最新バージョンがある場合は、次のImageMagick
方法でイメージをバッチ処理できます。magick
このコマンドをターゲットディレクトリで実行すると仮定するコマンドの例(したがって、元のjpg
ディレクトリは別のディレクトリにあります):
magick /path/to/*.jpg -scene 1 -crop 2x1@ +repage %03d.jpg
答え2
分割に必要なimagemagickコマンドラインはわかりませんが、ここでも問題ありません。すでにこれを行う方法を見つけたからです。GraphicsMagick
ここでも同じアイデアが適用されます。私が見つけたコマンドは次のとおりです。 ImageMagickラインは非常に混乱しています。
だから私がしたいことは次のとおりです。
#!/usr/bin/zsh
# this is a ZSH script. Would probably also work under bash, haven't tried.
targetdir=/home/Plato/newimgs
getwidth=gm identify -format '%w'
for number in {001..092}; do
infile="${number}.jpg"
width=$(getwidth) "${infile}"
leftnum=$((number * 2))
rightnum=$((leftnum + 1))
gm convert \
-crop "50%x100%+0+0" \
"${infile}" \
"${targetdir}/${(l:3::0:)leftnum}.jpg"
gm convert \
-crop "50%x100%+$((width / 2))+0" \
"${infile}" \
"${targetdir}/${(l:3::0:)rightnum}.jpg"
done
答え3
imagemagickを使うconvert
:
#!/bin/bash
inputdir=/path/to/images
outputdir=$inputdir/out
mkdir -p "$outputdir"
cnt=0
for i in "$inputdir/"*.jpg; do
if convert "$i" -crop 50%x100% "$outputdir/%d.tmp"; then
printf -v fname '%03d.jpg' $((++cnt))
mv "$outputdir/0.tmp" "$outputdir/$fname"
printf -v fname '%03d.jpg' $((++cnt))
mv "$outputdir/1.tmp" "$outputdir/$fname"
else
echo "failed to convert $i" >&2
exit 1
fi
done
出力ファイル名を直接指定する方法が見つかりませんでした。