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は今回は使わないけど多分、画像とかグラフ描写とかで結構使うと思われます。
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