在Python中从网站下载图像的一部分?

3
我目前可以使用以下方法从URL下载整个图像:
from PIL import Image, ImageTk
import cStringIO
import urllib

url = http://prestigemgmt.us/wp-content/uploads/2013/03/dog.jpg
self.image = Image.open(cStringIO.StringIO(urllib.urlopen(url).read()))

它可以很好地从网站上获取整个图像。我的问题是,有没有办法只获取图像的右半部分呢?

我知道我可以在下载后编辑图像,但速度是一个重要因素,所以理想情况下我只想下载我需要的部分。


2
不,那是不可能的。 - Ry-
这是不可能的,除非解码整个图像,然后提取出所需的数据。在压缩(JPEG、PNG等)图像时,所有像素都相互依存。 - rayryeng
虽然不可能完全避免,但文件I/O通常是主要瓶颈之一。因此,最好不要将图像下载并保存到磁盘,然后再打开它,而是直接将图像读入内存,然后进行裁剪。 - Hugo
1个回答

5

这是不可能做到的。

常见的图像文件格式,如PNG和JPEG,以一种编码方式进行编码,您无法在不下载完整图片的情况下下载任意部分的图片。

您需要下载整张图片,解码后再进行编辑。

对于高级知识,您可以学习PNGJPEG文件格式。

如果您控制提供图像的服务器,则可以编写服务器端脚本,在服务器上编辑图像,然后将编辑内容发送到客户端。


谢谢您的回复。不幸的是,我无法控制服务器。 - user5016464
1
所以 - 没有别的办法,只能获取整个图像。 - jsbueno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接