PILの使い方
思っていたよりも簡単なんですが、やりたいことにたどり着く前に困っています。
リモートにある画像ファイルを開いて、それをリサイズ&パディングして返したかったのですが、だいたいこんな感じになるんじゃないかなと思います。
def resize(self, source_url, size, padding=False): source = urllib.urlretrieve(source_url) image = Image.open(source[0]) image.thumbnail(size) if padding: # transparent canvas = Image.new('RGBA', size, (0,0,0,0)) diff = (size[0] - image.size[0], size[1] - image.size[1]) box = (diff[0] / 2, diff[1] / 2, image.size[0] + diff[0] / 2, image.size[1] + diff[1] / 2) canvas.paste(image, box) return canvas else: return image
thumbnailでリサイズして、パディングするときはpasteで座標を指定して貼付けます。resizeでリサイズすると画像が歪んでしまうしがたがたになるので、thumbnailを使っています。
それはいいのですが、怪しいのがファイルをリモートからを取ってくるところで、本当はストリームから直接突っ込みたいのですがなかなかうまくいかなかったのでretrieveしています。うーん…