logo
Loading...

詢問關於代碼img = Image.open(r.raw)的.raw問題 - Cupoy

with requests.get(img_url, stream=True) as r:     ...

pycrawler-2, 檢查圖片副檔名

詢問關於代碼img = Image.open(r.raw)的.raw問題

2020/03/11 下午 07:00
Python網路爬蟲討論版
Peter
觀看數:40
回答數:2
收藏數:0
pycrawler-2
檢查圖片副檔名

with requests.get(img_url, stream=True) as r:
        r.raise_for_status()
        # 檢查圖片副檔名
        img = Image.open(r.raw)



想請問一下上述代碼中的.raw是甚麼功能,為何在此處會需要做這個動作呢? 有相關文件可以參考嗎?

回答列表

  • 2020/03/11 下午 11:31
    Li 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 😃😃😃