2012年12月28日金曜日

herokuで、cloudinaryを利用した画像アップロード(python+django)

herokuで、cloudinaryを利用した画像アップロードです。cloudinaryは、クラウド上に画像をアップロードし、リサイズ、トリミングなど編集、管理できるサービスで、herokuのアドオンとして提供されています。設定環境は、python(2.7.2)+ django(1.4.2)。無料版のスタータープラン(Starter Plan)は、500MB のストレージ、25,000 画像ファイル、1月につき、1GB の転送量となっています。

画像のアップロードは、Django管理サイトから行なって、表示部分のみviews.pyで作りこんでいます。画像のサイズ変更はもちろん、切り抜きや、エフェクトなども思いのまま。人物画像では、自動顔認識の機能も使えます。cloudinaryは、利用価値大で素晴らしいサービスなのです。

スタータープラン(Starter Plan)
Starter Plan
500MB Storage 
25,000 Images 
1GB Monthly Bandwidth
1, pipでライブラリをインストール
pip install cloudinary
pip freeze > requirements.txt
heroku addons:add cloudinary
2, settings.py CLOUDINARYのアカウント設定
heroku configコマンドで確認できます。
CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME
CLOUDINARY = {
  'cloud_name': '(アルファベットのcloud_name)',  
  'api_key': '(数字のapi_key)',  
  'api_secret': '(アルファベットのapi_secret)',  
}
3, /blog/models.py モデル指定
import cloudinary
from cloudinary.models import CloudinaryField

class Blog(models.Model):
    image = cloudinary.models.CloudinaryField('image', null=True, blank=True)
4, /blog/views.py 画像の読み込みと編集
import cloudinary

def post(request, slug):   
    blog = get_object_or_404(Blog, slug=slug)
    if blog.image is not None:
        img = cloudinary.CloudinaryImage(blog.image.public_id, format=blog.image.format)
        pic = img.image(width=200, height=200, crop="fit", effect="pixelate_faces")
実際に設定してみたサイトがこちら自動で顔認識してくれているところが、ポイント高いです(笑)。

Django管理サイトの様子


参考サイト
Cloudinary(Heroku Dev Center)
Image transformations(Cloudinary Documentation)
Django model with Cloudinary Field(Stack Overflow)
cloudinary/pycloudinary(GitHub)

0 件のコメント:

コメントを投稿