2011/09/23(金) [n年前の日記]
#1 [prog] Python+PILで画像を縮小
単純に2倍拡大した画像を、単純に1/2のサイズに縮小するために、Python 2.6.6 + PIL を使用。通常のCGソフトだと画質をそれなりに維持するためにもっと複雑な処理・アルゴリズムを使って拡大縮小をしてしまうので、欲しい画像が得られないだろうと推測したわけで。
以下が、フォルダ内にあるpng画像を1/2のサイズにしてbmpで保存し直すスクリプト。
以下が、フォルダ内にあるpng画像を1/2のサイズにしてbmpで保存し直すスクリプト。
import os import sys import glob import Image in_dir = '..\\640x480\\' in_ext = '*.png' out_ext = '.bmp' # フォルダ内の全ての画像ファイルに対して処理を行う for infile in glob.glob(in_dir + in_ext): filename, ext = os.path.splitext(infile) # フォルダ名+ファイル名、と、拡張子に分けておく im = Image.open(infile) # 画像を開く src_pix = im.load() # 各ピクセルにアクセスしやすくするための準備 src_w, src_h = im.size # 画像の縦横幅を取得 dst_w = src_w / 2 dst_h = src_h / 2 print "%s %s : w,h=%d,%d -> %d,%d" % (filename, ext, src_w, src_h, dst_w, dst_h) dst_im = Image.new('RGB', (dst_w, dst_h)) # 新規画像作成 dst_pix = dst_im.load() # 出力先画像の全ピクセルに対して処理 for y in range(dst_h): for x in range(dst_w): dst_pix[x,y] = src_pix[x*2, y*2] # 新規画像を保存 outfile = filename + '_half' + out_ext dst_im.save(outfile, "BMP")無駄な部分はあるけど求める画像は得られたから良し。
[ ツッコむ ]
以上、1 日分です。