def create_thumbnail(file_path):
    thumbnail_filename = utils.get_thumb_filename(os.path.basename(file_path))
    thumbnail_format = utils.get_image_format(os.path.splitext(file_path)[1])
    file_format = thumbnail_format.split('/')[1]

    image_from_url = cStringIO.StringIO(urllib.urlopen(file_path).read())
    image = Image.open(image_from_url)

    # Convert to RGB if necessary
    # Thanks to Limodou on DjangoSnippets.org
    # http://www.djangosnippets.org/snippets/20/
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')

    # scale and crop to thumbnail
    imagefit = ImageOps.fit(image, THUMBNAIL_SIZE, Image.ANTIALIAS)
    thumbnail_io = BytesIO()
    imagefit.save(thumbnail_io, format=file_format)

    thumbnail = InMemoryUploadedFile(
        thumbnail_io,
        None,
        thumbnail_filename,
        thumbnail_format,
        len(thumbnail_io.getvalue()),
        None)
    thumbnail.seek(0)

    cc = AWSCloudContainer('mediaplan')
    data = thumbnail.read()
    cc.upload_data(filename=thumbnail_filename, data=data)
    return thumbnail_filename
Пример #2
0
 def _save_file(request, uploaded_file):
     logger.info("_save_file Enter new")
     replace_char = {
         u'Ä': u'AE',
         u'Å': u'AA',
         u'Ö': u'OE',
         u'ä': u'ae',
         u'å': u'aa',
         u'ö': u'oe'
     }
     filename = os.path.splitext(uploaded_file.name)
     logger.info("_save_file 1")
     file_name = u'%s' % filename[0]
     #check for unicode characters like å,ö or ä
     for k,v in replace_char.items():
         file_name = file_name.replace(k,v)
     saved_name = file_name + "_" +(''.join(random.choice(string.ascii_uppercase + string.digits) for i in range(6))) + filename[1]
     logger.info("_save_file 2")
     cc = AWSCloudContainer('mediaplan')
     logger.info("_save_file cc created")
     uploaded_file.seek(0)
     data = uploaded_file.read()
     logger.info("_save_file calling upload_data")
     cc.upload_data(filename=saved_name, data=data)
     logger.info("_save_file upload_data returned")
     logger.info("_save_file Exit")
     return saved_name