cqwcns 发表于 2022-8-2 17:00

python,PIL Image读取网络图片的问题

如题,我读取一个本地图片没有问题,但希望读取一个网络上的图片,这样写是不行的。
百度搜了一转,既然也没有找到什么方法。
请各位大佬指教,谢谢。


from PIL import Image

print('开始')
# img = Image.open("D:\\Files\\python\\img_to_str\\test2.jpg")
img = Image.open('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')

# 剪裁出右下角
region = img.crop((585, 700, 800, 800))

print('完成')

wty3025 发表于 2022-8-2 17:13

from PIL import Image
import requests


print('开始')
# img = Image.open("D:\\Files\\python\\img_to_str\\test2.jpg")

response = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
with open('a.png', 'wb') as f:
    f.write(response.content)
f.close()

img = Image.open('a.png')

# 剪裁出右下角
region = img.crop((585, 700, 800, 800))

print('完成')

你把网络上的图片保存到本地再打开就行了,

平淡最真 发表于 2022-8-2 17:14

import requests
from PIL import Image
from io import BytesIO
yzmdata = requests.get(图片url)
tempIm = BytesIO(yzmdata.content)
im = Image.open(tempIm)

平淡最真 发表于 2022-8-2 17:15

为啥你百度搜不到
https://www.baidu.com/s?wd=PIL+Image%E8%AF%BB%E5%8F%96%E7%BD%91%E7%BB%9C%E5%9B%BE%E7%89%87&ie=UTF-8
我随便一搜就有{:301_971:}

11plz 发表于 2022-8-2 17:19

楼主试试这个代码image的open功能貌似不能直接打开网页

import requests
from PIL import Image
from io import BytesIO

response = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
response = response.content

BytesIOObj = BytesIO()
BytesIOObj.write(response)
img = Image.open(BytesIOObj)
img.show()

nanhai31 发表于 2022-8-2 17:20

直接下载下来读取呗from PIL import Image
import requests
response = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png').content
with open('tupian.png','wb',encoding='utf-8') as f:
    f.write(response)
print('开始')
img = Image.open('tupian.png')

# 剪裁出右下角
region = img.crop((585, 700, 800, 800))
print('完成')

iawyxkdn8 发表于 2022-8-2 17:34

啥你百度搜不到
https://www.baidu.com/s?wd=PIL+I ... %89%87&ie=UTF-8
我随便一搜就有

grekevin 发表于 2022-8-2 17:38

import requests

from io import BytesIO

from PIL import Image

# Image.open的第一个参数必须是一个图片文件
# D:\\Files\\python\\img_to_str\\test2.jpg 表示的是一个本地图片文件
# img = Image.open("D:\\Files\\python\\img_to_str\\test2.jpg") 这样写没错

# https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png 这只是个URL,表示的是你请求的图片的URL地址,不代表这张图片,而是表示怎么找到这个图片
# 意思就是就像你身份证上的地址,可以通过地址找到你这个人;但是这个身份地址可不代表你这个客观存在的实体
# 必须通过这个url拿到到这个图片文件才行

#可以这样写
img = Image.open(BytesIO(requests.get("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png").content))


# 剪裁出右下角
region = img.crop((585, 700, 800, 800))

# 保存裁剪出的内容
region.save('croped_image.png')

外酥内嫩 发表于 2022-8-2 18:41

当然不能这么写,你得先获取网络图片的二进制数据再将其保存到本地

namedlxd 发表于 2022-8-2 18:59

from PIL import Image
import requests
from io import BytesIO

response = requests.get(url)
img = Image.open(BytesIO(response.content))


python3
页: [1] 2
查看完整版本: python,PIL Image读取网络图片的问题