因此,我在Django中有一個用於將圖像上傳到ImageField的窗體。這很好。然後,我將request.FILES ['image']關閉到一個名爲MakeThumbnail的函數,以便進一步處理。從Django ImageField.file製作縮略圖並轉換回圖像
MakeThumbnail工作不太好。我已經從一系列StackOverflow線程彙集了這個,但我想我錯過了一些關鍵概念。這是我的代碼。
def MakeThumbnail(file):
img = Image.open(file)
thumbnail = img.thumbnail((128, 128), Image.ANTIALIAS)
thumbnailString = StringIO.StringIO(thumbnail)
newFile = ContentFile(thumbnailString)
return newFile
堆棧跟蹤說我沒有在這條線:NEWFILE = ContentFile(thumbnailString)。它給了我以下錯誤:預期的讀取緩衝區,找到的實例
我想我可能會失敗回縮略圖= img.thumbnail((128,128),Image.ANTIALIAS),但在查看局部變量:
thumbnailString : <StringIO.StringIO instance at 0x0000000003B39748>
file : <InMemoryUploadedFile: Desert.jpg (image/jpeg)>
thumbnail : None
img : <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=128x96 at 0x3B25C08>
請注意,縮略圖無。它應該包含一些東西。有人對我有一些提示嗎?
謝謝!
喜!即時通訊非常新的django,我也想添加一個縮略圖生成一個管理員上傳圖像。我會把這段代碼放在模型上嗎?感謝您的幫助:) –
不應該將'img'傳遞給'StringIO.StringIO(img)'? –
img.save標籤容納了一行代碼爲我們照顧這件事。我不確定是否將PIL Image對象傳遞到StringIO不會。我的猜測是,StringIO尋找一個讀取方法,我假設PIL Image實現了,所以我想這個解決方案也可以。 – Nick