2009-06-26 11 views
6

私は元のサイズの約60%にサイズを変更したい画像のディレクトリがあります。ディレクトリ内の画像のサイズを変更する

は、どのように私はこれを行うに行きますか?私はPIL(Pythonの画像ライブラリ)でのPythonを使う乾杯

EEF

+0

わかりません。まず第一に、それは一度の仕事だとは言いません。第二に、「Irfan View」はオプションではないかもしれません。たとえば、オペレーティングシステムの制約のためです。 3番目 - ImageMagickは非常に複雑で、バッチツールとして使用してもプログラミングのようなものです。 –

答えて

1

PythonやPerlのいずれかにすることができます。もちろんこれを行うための特別なプログラムがあります。

多くの人がPILを使用しています。 Quick image resizing with python

PILは非常に強力ですが、最近、私はこのレシピを発見した:見て Putting watermark to images in batch

2

使用PerlMagickが、もののちょうどこの種を行うには、コマンドラインツールの人気ImageMagickスイートへのインタフェースです。 PythonMagicも利用可能です。

0

サイズを変更するだけで済みますか、プログラムでサイズを変更する必要がありますか? サイズ変更するだけの場合は、PixResizerを使用します。 http://bluefive.pair.com/pixresizer.htm

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 ... - サイズ変更が(何らかの理由で)失敗するならば、安全面にいるだけです。

+0

ありがとう、これは私が探していたものです。 –

18

プログラマチックに行う場合は、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) 
関連する問題