カテゴリー
未分類

python + PIL でパノラマ100分割

パノラマ一般公開しています
ようやく終わりました

その過程での成果、巨大な画像を小さく分割するスクリプト書いたので公開しておきます

完成したパノラマデータは幅50300ピクセル高さ600ピクセルにしました
大きさは170メガバイト
形式はtifで無圧縮です
ちなみにオリジナルはこの25倍の大きさあります笑

こんなに大きくてはブラウザで表示できませんので分割して必要な部分だけ読み込むようにします
そのために分割が必要、jpgへの圧縮も必要

ちょうど横幅が50300と100で割り切れるので100分割することにする
600x503 が100枚
jpgのクオリティは0-100まで選べる
見た目とサイズのバランスで90に決めました
僕の3年前のデスクトップ(CPU 2.4G ,メモリ4G)で10秒ぐらいで処理終わります
いい時代になったもんだなあ

Python Imaging Library (PIL)のドキュメント

必要な分だけ読み込むロジックも誰かの要望があれば解説します

実はまたマーケットがらみで企画思いついちゃったんだよなあ
どうしよう

from PIL import Image

splits = 100
quality = 90

im = Image.open('panorama.tif')

height = im.size[1]
width = im.size[0] / splits

i = 0
while i < splits:
  range = (i * width , 0 , (i + 1) * width , height )
  splitedIm = im.crop(range)
  name = 'images/panorama/' + str(i) + '.jpg'
  splitedIm.save(name, 'JPEG',quality=quality)

  print name
  i=i+1

#100 29.4M
#90  11.0M
#80   7.6M
#70   6.08M