詢問關於代碼img = Image.open(r.raw)的.raw問題
with requests.get(img_url, stream=True) as r:
r.raise_for_status()
# 檢查圖片副檔名
img = Image.open(r.raw)
想請問一下上述代碼中的.raw是甚麼功能,為何在此處會需要做這個動作呢? 有相關文件可以參考嗎?
回答列表
-
2020/03/11 下午 11:31Li Yuang贊同數:1不贊同數:0留言數:1
(問題1.) .raw 我想指的是圖片的raw格式,raw格式的圖片是未經過任何處理,最原始的圖片,其他格式如.jpg、.png等都是經過壓縮、調色等動作而出來的影片。(raw格式介紹 : https://www.youtube.com/watch?v=yZEp7wWqswA)
(問題2.)程式碼使用.raw的原因我想是因為我們只知道requests.get()下來的是一張圖,但不確定這張圖片的確切格式,所以先用.raw格式(PIL支援)開啟/讀取圖片,之後下一行程式判斷其真實格式(img_ext = img.format.lower() )以此判斷其真實格式,我的執行結果是.jpeg
(問題3) 我不知道有無相關文件專門介紹的QQ
-
2020/03/12 上午 00:17張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
嗨,
Li Yuang 的回答很詳細,這邊再補充一下官方文件的說明:
```
>>> r = requests.get('https://api.github.com/events', stream=True)
>>> r.raw
<urllib3.response.HTTPResponse object at 0x101194810>
>>> r.raw.read(10)
'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'```
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃