У меня ошибка после ошибки при попытке загрузить и изменить размер изображения на s3 с помощью pil и botos3 и django default_storage. Я пытаюсь сделать это при сохранении в админе.
вот код:
from django.db import models
from django.forms import CheckboxSelectMultiple
import tempfile
from django.conf import settings
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage as s3_storage
from django.core.cache import cache
from datetime import datetime
import Image, os
import PIL.Image as PIL
import re, os, sys, urlparse
class screenshot(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200)
image = models.ImageField(upload_to='screenshots')
thumbnail = models.ImageField(upload_to='screenshots-thumbs', blank=True, null=True, editable=False)
def save(self):
super(screenshot, self).save() # Call the "real" save() method
if self.image:
thumb = Image.open(self.image.path)
thumb.thumbnail(100, 100)
filename = str(self.slug)
temp_image = open(os.path.join('tmp',filename), 'w')
thumb.save(temp_image, 'JPEG')
from django.core.files import File
thumb_data = open(os.path.join('/tmp',filename), 'r')
thumb_file = File(thumb_data)
new_file.thumb.save(str(self.slug) + '.jpg', thumb_file)
def __str__(self):
return self.title
Это только один из многих способов, которыми я пытался заставить его работать, и я получаю (2, «Нет такого файла или каталога») или какую-то другую ошибку.
Пожалуйста, кто-нибудь может помочь мне заставить его работать. Я хочу, чтобы он использовал бэкэнд django, чтобы загруженное изображение было изменено, сохранено как эскиз и затем сохранено. Дайте мне знать, если вам нужно знать какую-либо информацию. Я был бы счастлив использовать фрагмент django - http://djangosnippets.org/snippets/224/, но я не знаю, какие данные для его подачи. Я получаю те же ошибки ввода-вывода и «нет такого пути / имени файла», хотя основное изображение загружается в s3 нормально. Я также пробовал такие вещи, как:
myimage = open(settings.MEDIA_URL + str(self.image))
myimage_io = StringIO.StringIO()
imageresize = myimage.resize((100,100), Image.ANTIALIAS)
imageresize.save('resize_100_100_aa.jpg', 'JPEG', quality=75)
Прошло 3 дня поисков, поэтому я начинаю жалеть! Спасибо