私はちょうどDjangoとPythonを使い始めました。私は写真アプリを作ろうとしています。このスクリプトはサムネイルを生成しており、私はそれを自分でやってみたいと思います。残念ながら私はStringIO()
が何をしているのか分かりません。その場合、Python Docsはあまり役に立ちません。このスクリプトではStringIO()は何のために使用されていますか?
この特定のケースではStringIO()
は何かを説明してもらえますか? http://djangosnippets.org/snippets/1172/から
:
def save(self):
from PIL import Image
#Original photo
imgFile = Image.open(self.image.path)
#Convert to RGB
if imgFile.mode not in ('L', 'RGB'):
imgFile = imgFile.convert('RGB')
#Save a thumbnail for each of the given dimensions
#The IMAGE_SIZES looks like:
#IMAGE_SIZES = { 'image_web' : (300, 348),
# 'image_large' : (600, 450),
# 'image_thumb' : (200, 200) }
#each of which corresponds to an ImageField of the same name
for field_name, size in self.IMAGE_SIZES.iteritems():
field = getattr(self, field_name)
working = imgFile.copy()
working.thumbnail(size, Image.ANTIALIAS)
fp = StringIO()
working.save(fp, "JPEG", quality=95)
cf = ContentFile(fp.getvalue())
field.save(name=self.image.name, content=cf, save=False);
#Save instance of Photo
super(Photo, self).save()
今後、質問にコードを投稿してください。 StackOverflowは簡単で読みやすいです。 – cheeken
'StringIO'は(通常はファイルシステムを使用する' open'で作成された通常のファイルとは対照的に)メモリ内ファイルを作成します。したがって、基本的にメモリ内でファイル操作を行います。 – birryree