python-URL轉jpg圖片


問題描述

有圖片地址,可以在網頁打開 URL:https://bdfile.bluemoon.com.cn/group2/M00/0A/BA/wKg_HlwzY1SAIdXDAAFyo-ZOLKQ399.jpg

現需要將圖片url轉為圖片,保存在本地

 

解決思路

在內存中將圖片url打開,編碼為base64,在對這個編碼進行解碼為圖片進行保存即可

import os,base64
import requests as req
from PIL import Image
from io import BytesIO

response = req.get("https://bdfile.bluemoon.com.cn/group2/M00/0A/BA/wKg_HlwzY1SAIdXDAAFyo-ZOLKQ399.jpg")

# 內存中打開圖片
image = Image.open(BytesIO(response.content))

# 圖片的base64編碼
ls_f = base64.b64encode(BytesIO(response.content).read())

# base64編碼解碼
imgdata = base64.b64decode(ls_f)

# 圖片文件保存
file = open('test.jpg','wb')
file.write(imgdata)
file.close()

 

結果

 

補充:

原文:https://www.jianshu.com/p/d64354a61359

1.用OpenCV

OpenCV的imread()只能加載本地的圖片,並不能通過網址加載圖片。但是,opencv的VideoCapture類可以從url加載視頻。如果只用opencv的話,我們可以一個迂回的方式:先用VideoCapure加載網址下的圖片,然后再傳給Mat。

import cv2
cap = cv2.VideoCapture(img_src)
if( cap.isOpened() ) :
    ret,img = cap.read()
    cv2.imshow("image",img)
    cv2.waitKey()

2. OpenCV+Numpy+urllib

import numpy as np
import urllib
import cv2
resp = urllib.urlopen(img_src)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
cv2.imshow("Image", image)
cv2.waitKey(0)

3. skimage

相對來說,這種方式應該是最簡單的,因為skimage可以直接以imread()函數來讀取網頁圖片,而不需要其他的輔助,也不需要迂回。

from skimage import io
image = io.imread(img_src)
io.imshow(image)
io.show()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM