我知道Internet上图像的URL.
例如http://www.digimouth.com/news/media/2011/09/google-logo.jpg,其中包含Google的徽标.
现在,如何使用Python下载此图像,而无需在浏览器中实际打开URL并手动保存文件.
我想将如下所示的标志图像添加到我的条形图中:
我尝试过 AnnotationBbox,但它显示为方形轮廓。谁能告诉我如何实现如上图所示的效果?
编辑:
下面是我的代码
ax.barh(y = y, width = values, color = r, height = 0.8)
height = 0.8
for i, (value, url) in enumerate(zip(values, image_urls)):
response = requests.get(url)
img = Image.open(BytesIO(response.content))
width, height = img.size
left = 10
top = 10
right = width-10
bottom = height-10
im1 = img.crop((left, top, right, bottom))
print(im1.size)
im1
ax.imshow(im1, extent = [value - 6, value, i - height / 2, i + height / 2], aspect = 'auto', zorder = 2) …Run Code Online (Sandbox Code Playgroud) 我可以使用cv2读取jpg文件
import cv2
import numpy as np
import urllib
url = r'http://www.mywebsite.com/abc.jpg'
req = urllib.request.urlopen(url)
arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
img = cv2.imdecode(arr,-1)
cv2.imshow('abc',img)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用gif文件时,它会返回一个错误:
error: (-215) size.width>0 && size.height>0 in function cv::imshow
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题呢?
我知道这个问题有几个答案,但没有一个让我满意,因为它们都包括Dash,而我只想使用基本的plotly。
我有一个本地图像文件:(/tmp/bla.svg还有/tmp/bla.svg)我想将其显示为图形上的徽标:
这是我的图形代码,使用以下示例plotly:
fig.add_layout_image(
dict(
source='https://raw.githubusercontent.com/cldougl/plot_images/add_r_img/vox.png',
xref='paper', yref='paper',
x=1, y=1.05,
sizex=0.1, sizey=0.1,
xanchor='center', yanchor='bottom'
)
)
Run Code Online (Sandbox Code Playgroud)
这很有效,但是任何将源更改为本地图像的尝试都会失败。该文档甚至没有提供非 url 图像源的选项。
我确实尝试了本地网址 - 但失败了:
source=r'file:///tmp/bla.png',
Run Code Online (Sandbox Code Playgroud)
并且
source=r'file:///tmp/bla.svg',
Run Code Online (Sandbox Code Playgroud)
我也尝试使用这个答案 - 使用 base64 编码:
def _get_image(path):
with open(path, 'rb') as image_file:
encoded_string = base64.b64encode(image_file.read()).decode()
encoded_img = f'data:image/png;base64,{encoded_string}'
return encoded_img
...
source=_get_image(path)
...
Run Code Online (Sandbox Code Playgroud)
但这也失败了,即使我测试了输出base64,它是一个图像!
我怎样才能让它发挥作用?
我试图从 http 请求中获取 jpeg、gif 等,但出现错误。这是代码的一部分:
def printimg(url):
http = httppoolmgr()
file = http.request('GET',url).read()
r_data = binascii.unhexlify(file)
stream = io.BytesIO(r_data)
img = Image.open(stream)
#img = Image.open(file)
return img
Run Code Online (Sandbox Code Playgroud)
返回的错误代码是:
File "C:\Python34\lib\site-packages\pillow-2.5.3-py3.4-win32.egg\PIL\Image.py"
, line 2256, in open
OSError: cannot identify image file <_io.BytesIO object at 0x02345ED8>
Run Code Online (Sandbox Code Playgroud)
有人已经遇到过这种问题吗?
我是Python的新手,我正在试图弄清楚如何从URL读取图像.
这是我目前的代码:
from PIL import Image
import urllib.request, io
URL = 'http://www.w3schools.com/css/trolltunga.jpg'
with urllib.request.urlopen(URL) as url:
s = url.read()
Image.open(s)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
C:\python>python image.py
Traceback (most recent call last):
File "image.py", line 8, in <module>
Image.open(s)
File "C:\Anaconda3\lib\site-packages\PIL\Image.py", line 2272, in open
fp = builtins.open(filename, "rb")
ValueError: embedded null byte
Run Code Online (Sandbox Code Playgroud)
我不知道这意味着什么.我究竟做错了什么?
使用以下命令执行从 s3 到文件的凭证下载很简单
import boto3
s3 = boto3.resource('s3')
def save_file_from_s3(bucket_name, key_name, file_name):
b = s3.Bucket(bucket_name)
b.download_file(key_name, file_name)
Run Code Online (Sandbox Code Playgroud)
使用以下命令可以轻松从 s3 下载到类似文件的对象
import from StringIO import StringIO
import urllib
file_like_object = StringIO(urllib.urlopen(url).read())
Run Code Online (Sandbox Code Playgroud)
(请参阅如何在 Python 中从 URL 读取图像数据?)
但是如何执行从 s3 到类文件对象的凭证下载?
我是python的新手。但是我有一个任务,我需要从 URL 显示/获取图像。我一直在使用带有 python 的 Jupyter notebook 来尝试这样做。
import sys
print(sys.version)
3.5.2 |Anaconda 4.1.1 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)]
Run Code Online (Sandbox Code Playgroud)
我试图像在这篇文章中那样做,但没有一个答案有效。
和
import urllib, cStringIO
file = cStringIO.StringIO(urllib.urlopen(URL).read())
img = Image.open(file)
Run Code Online (Sandbox Code Playgroud)
我得到:
ImportError Traceback (most recent call last)
<ipython-input-33-da63c9426dad> in <module>()
1 url='http://images.mid-day.com/images/2017/feb/15-Justin-Bieber.jpg'
2 print(url)
----> 3 import urllib, cStringIO
4
5 file = cStringIO.StringIO(urllib.urlopen(URL).read())
ImportError: No module named 'cStringIO'
Run Code Online (Sandbox Code Playgroud)
和:
from PIL import Image
import requests
from io import BytesIO
response = …Run Code Online (Sandbox Code Playgroud) 我正在使用 pygame 模块制作游戏,但如何更改标题栏上显示的默认图标。
我正在使用 Python 3.4。
python ×9
amazon-s3 ×1
axes ×1
boto3 ×1
figure ×1
matplotlib ×1
opencv ×1
pillow ×1
plot ×1
plotly ×1
pygame ×1
python-2.7 ×1
python-3.x ×1
svg ×1
web-scraping ×1