Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

Django Heroku S3 scikit-imageを試しに使ってみたときの話

概要

画像処理関連のライブラリ、scikit-imageをdjango+heroku+s3の環境で試してみた。 opencvを導入しようとするも、挫折orz

参照サイト

公式サイト:

scikit-image: Image processing in Python — scikit-image

日本語での解説サイト<-めちゃめちゃわかりやすいです!

3.3. Scikit-image: 画像処理 — Scipy lecture notes

手順など

インストール

pip install scikit-image するだけ!足りないライブラリとかは教えてくれるはず!

ちょっとハマったポイント

ちょっと脱線するけど、matplotlib をpyenv環境にinstallして、ipython notebookとかで使おうとするときに、errorが出たときの対処法は以下のサイトが参照になりました!matplotolibは今回は使わないけど多分、画像とかグラフ描写とかで結構使うと思われます。

qiita.com

models.py にコードを追記してみる

import skimage
from skimage import io

def create_colormagicoriginal_image(media_path, instance, owner_slug):
    filename = os.path.basename(media_path)
    basename, file_extension = filename.split(".")
    upper_file_extension = get_file_extension(file_extension)
    scimage = io.imread(storage.open(media_path))
    color_img = 3 * scimage
    temp_loc = "%stmp/%s/" %(settings.MEDIA_URL, owner_slug)
    temp_file_path = os.path.join(temp_loc, filename)
    temp_image = open(temp_file_path, "wb")
    io.imsave(temp_image, color_img)
    thumb_data = open(temp_file_path, "rb")

    thumb_file = File(thumb_data)
    instance.image.save(filename, thumb_file)
    instance.save()

ポイント

  • イメージ的には、PILを使っていたところを、skimageに変えるだけ。
  • io ってのは、input/outputの略らしい、skimageの重要functionかもしれない。io.imreadでファイルを読み込んで、io.imsaveで、saveするだけなので、直感的にわかりやすいかもしれない。

特にerrorもなく無事完了!

追記

新しいmodelを追加した時は、必ずheroku上でもmigrateする!

heroku run python manage.py migrate