Subscribe:

2012/05/09

ダウンロードしたした画像をDjangoに登録する


models.py
class TestImages(models.Model):
    image      = models.ImageField(upload_to='img/%Y%m%d', db_index=True)
    pub_date   = models.DateTimeField(u'登録時間',editable=False,auto_now=True)

task.py
import os
from models import TestImages
from django.conf import settings
from PIL import Image
from StringIO import StringIO

def Download_Image(url):
    path = os.path.join(settings.MEDIA_ROOT,'img',os.path.basename(url))
    try:
        img = urllib.urlopen(url)
    except urllib2.HTTPError:
        return 0
    localfile = open( path, 'wb')
    localfile.write(img.read())
    img.close()
    localfile.close()
    return path

def Image_Path_Save(path, obj):
    imgFile = Image.open(path)
    fmt = imgFile.format
    copyImg = imgFile.copy()
    fp = StringIO()
    # 画像を保存
    copyImg.save(fp, fmt, quality=128)
    cf = ContentFile(fp.getvalue())
    obj.save(os.path.basename(path), cf, save=False)
    # 一時ファイルの削除
    os.remove(path)
    return obj

# こんな変数があったとして
dic = {'url':'http://hoge/hoge.jpg'}
# ファイルをダウンロード
path = Download_Image(dic['url'])
# オブジェクトを作成
obj = TestImages()
# ファイル保存
sav = Image_Path_Save(path ,obj.image)
sav.save()

実際にテストしてないので
動かないかもしれないですがこんなイメージって事で・・・

0 件のコメント: