我發現如何使用PIL來獲取圖像尺寸,但不是以字節爲單位的文件大小。我需要知道文件大小以決定文件是否太大而無法上傳到數據庫。如何使用PIL獲取圖像大小(字節)
回答
嘗試:
import os
print os.stat('somefile.ext').st_size
現在有使用PIL本身的方法嗎? – 2012-08-10 14:56:38
爲什麼你需要使用PIL? – thebjorn 2012-08-10 15:00:59
來控制它是否是一個圖像不是僞造的圖像標題,做一個上傳profil,然後將其存儲到數據庫,所以很明顯,使PIL中的方法獲得以字節爲單位的大小不是? – 2012-08-10 15:04:15
我有點晚,但我搜索如何獲得PIL圖像的大小,而不把它保存到磁盤時碰到這個問題,5分鐘前來到。萬一別人遇到這個,這是做一個簡單的方法:
import StringIO
output = StringIO.StringIO()
image_output.save(output, 'PNG') #a format needs to be provided
contents = output.getvalue()
output.close()
image_filesize = len(contents)
如果你已經在文件系統中的圖像:
import os
os.path.getsize('path_to_file.jpg')`
但是,如果你想要得到的即在存儲器中並且還沒有被保存到文件系統的圖像的保存尺寸:所述圖像數據的
from io import BytesIO
img_file = BytesIO()
image.save(img_file, 'png')
image_file_size = img_file.tell()
該方法將避免多次讀取,用StringIO。但請注意,它將使用更多的RAM。一切都是權衡。 :-)
編輯:我剛纔看到從OP此評論:
最後,問題是從beginnig,如果有人上傳圖片 有1個千兆(僞造的),他」在PIL 會做它的東西之前會殺死服務器,所以我必須在它完成之前阻止請求!
這是一個非常不同的問題,可能是最好的完成在網絡服務器。對於nginx,您可以將其添加到您的配置中:
http {
#...
client_max_body_size 100m; # or whatever size you want as your limit
#...
}
與從桌面獲取尺寸相比,「BytesIO」方法似乎低估了尺寸。任何想法爲什麼? – getup8 2017-01-12 22:53:22
- 1. 如何使用node.js獲取圖像文件的字節大小
- 2. 如何從imageview(android)獲取圖像大小字節
- 3. PIL調整大小圖像
- 4. 如何讓jQuery以字節獲取圖像大小,而不是圖像尺寸?
- 5. 如何使用PIL減少圖像文件大小
- 6. 如何用PHP和GD獲取圖像資源大小(以字節爲單位)?
- 7. 如何用Delphi以字節爲單位獲取圖像的大小?
- 8. 如何獲取圖像大小在forms.py
- 9. Android-如何獲取圖像大小
- 10. 如何獲取圖像大小?
- 11. 上傳之前獲取圖像大小(以字節爲單位)
- 12. 用Cocoa減少圖像字節大小
- 13. 如何在1ms內用PIL調整一幅圖像的大小?
- 14. PIL調整大小圖像返回NoneType
- 15. 在PIL中調整圖像大小
- 16. 防止PIL增加圖像的大小
- 17. woocommerce獲取圖像大小
- 18. 獲取圖像大小
- 19. Silverlight:獲取圖像大小
- 20. PHP:獲取圖像大小
- 21. 獲取圖像的大小
- 22. 獲取圖像的大小
- 23. PIL:放大圖像
- 24. 如何從AS3中的字節數組獲取GIF圖像大小尺寸?
- 25. 以字節爲單位獲取圖像大小以檢查不良圖像
- 26. PHP將圖像作爲字節數組存儲時獲取圖像大小
- 27. 如何從python PIL圖像對象獲取字符串數據?
- 28. 如何在iPhone中獲取圖像的大小(內存大小)?
- 29. 如何獲取圖像大小到Facebook的評論圖像大小在Android
- 30. 如何獲取sitecore 8中圖像字段的大小?
您是生成圖像還是存儲在磁盤上的圖像? – 2012-08-10 14:50:06
使用文件系統API來獲取文件大小,而不是PIL。 – wberry 2012-08-10 14:51:42
或'len()',如果你在內存中而不是在文件系統上(這看起來很可能是你將數據庫存儲爲BLOB)。 – geoffspear 2012-08-10 14:52:49