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")
無駄な部分はあるけど求める画像は得られたから良し。
[ ツッコむ ]
以上です。