6

元のサイズの約60%にサイズ変更したい画像でいっぱいのディレクトリがあります。

どうすればこれを行うことができますか?PythonまたはPerlのいずれかにすることができます

乾杯

Eef

4

6 に答える 6

17

プログラムでそれを行いたい場合は、PIL を使用してサイズを変更します。

newIm = im.resize((newW, newH)

次に、同じファイルまたは新しい場所に保存します。

フォルダーを再帰的に調べ、すべての画像にサイズ変更機能を適用します。

私はあなたのために働くと思うサンプルスクリプトを思いつきました. あなたはそれを改善することができます:多分それをグラフィカルにする、同じ拡張子またはすべてpngにするなどのオプションを追加する、線形/バイリニアなどのサンプリングのサイズを変更する

import os
import sys
from PIL import Image

def resize(folder, fileName, factor):
    filePath = os.path.join(folder, fileName)
    im = Image.open(filePath)
    w, h  = im.size
    newIm = im.resize((int(w*factor), int(h*factor)))
    # i am saving a copy, you can overrider orginal, or save to other folder
    newIm.save(filePath+"copy.png")

def bulkResize(imageFolder, factor):
    imgExts = ["png", "bmp", "jpg"]
    for path, dirs, files in os.walk(imageFolder):
        for fileName in files:
            ext = fileName[-3:].lower()
            if ext not in imgExts:
                continue

            resize(path, fileName, factor)

if __name__ == "__main__":
    imageFolder=sys.argv[1] # first arg is path to image folder
    resizeFactor=float(sys.argv[2])/100.0# 2nd is resize in %
    bulkResize(imageFolder, resizeFactor)
于 2009-06-26T12:09:34.047 に答える
11

ImageMagickの一部である mogrify を使用するのはどうですか? これを Perl から本当に制御する必要がある場合は、 Image::MagickImage::ResizeまたはImagerを使用できます。

于 2009-06-26T11:43:41.023 に答える
10

シェルにできますか?

mkdir resized
for a in *.jpg; do convert "$a" -resize 60% resized/"$a"; done

1 つ以上のコアがある場合は、次のように実行できます。

find . -maxdepth 1 -type f -name '*.jpg' -print0 | xargs -0 -P3 -I XXX convert XXX -resize 60% resized/XXX

-P3 は、同時に最大 3 つの画像のサイズを変更する (並列化) ことを意味します。

オリジナルを保持する必要がない場合は、mogrify を使用できますが、私は convert を使用してから rm ...; を使用することを好みます。mv ... - サイズ変更が (何らかの理由で) 失敗した場合の安全のために。

于 2009-06-26T12:01:07.823 に答える
2

PerlMagickを使用します。これは、この種のことを行うためのコマンド ライン ツールの一般的なImageMagickスイートへのインターフェイスです。PythonMagicも利用できます。

于 2009-06-26T11:41:49.187 に答える
1

Python と PIL (Python Image Library) を使用しています。もちろん、これを行うための特別なプログラムがあります。

多くの人がそのようなことに PIL を使用しています。見てください:pythonで画像をすばやくサイズ変更する

PIL は非常に強力で、最近このレシピを見つけました: バッチで画像に透かしを入れる

于 2009-06-26T11:39:38.380 に答える
0

サイズを変更するだけですか、それともプログラムでサイズを変更したいですか? サイズを変更するだけの場合は、PixResizer を使用します。http://bluefive.pair.com/pixresizer.htm

于 2009-06-26T11:43:05.347 に答える