Python如何快速获得图片的大小,但是不要下载。

2013-07-08 13:52:25 +08:00
 kenneth
想提高一下获取图片大小的程序的效率,不想把图片下载,或者读取了才知道大小,大家有没有快速获得图片大小的方法。
10260 次点击
所在节点    Python
46 条回复
anjianshi
2013-07-08 13:53:44 +08:00
是想获得图片的尺寸,还是图片的文件大小?
yfdyh000
2013-07-08 13:57:46 +08:00
kenneth
2013-07-08 14:06:07 +08:00
@anjianshi
@yfdyh000
谢谢,是我没表达清楚,我想知道的是尺寸,就是图片的长宽,但是不知道如何快速得到,不要下载文件。
phuslu
2013-07-08 14:12:12 +08:00
按照 http 标准,完全不下载时不可能的,但是你可以只下载一部分头部。

之前写过一个根据文件头部读取 imagesize 的单文件 .py
https://github.com/phuslu/imgsz/blob/master/__init__.py
楼主你只要喂给它图片的头部下载下来就可以了。
csx163
2013-07-08 14:12:26 +08:00
看了看要求,还是目测吧.

不下载如何知道呢,靠文件名么?
kenneth
2013-07-08 14:24:33 +08:00
@phuslu 要点应该就是你这个,不过你的代码我有点不理解,我再好好看看。
centerqi
2013-07-08 14:40:45 +08:00
http 有个 head 请求,可以获取文件大小,你可以根据文件大小,得出一个经验值
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
phuslu
2013-07-08 14:42:11 +08:00
@centerqi HEAD 这个办法基本不可行。你得到是一个 file size, 怎么转化为 "长 x 宽"?
centerqi
2013-07-08 14:50:27 +08:00
很好算啊,你抓取 几万张图片,把每一个图片的大小和文件大小的关系算出来,你就能得到一个系数,我们每天抓取这么多图片,都是这样弄的,求这个系数很简单的,就是一个 y=ax的问题
spark
2013-07-08 14:58:21 +08:00
@centerqi 这种计算方式不靠谱吧...压缩比不一样, 图片尺寸天差地别
centerqi
2013-07-08 15:01:51 +08:00
好吧,你自己试试就行,一个jpg的图片,5k和 50k的大小会一样吗?
hengxin196
2013-07-08 15:02:26 +08:00
用过php的一个 大概是原理是通过获取头 根据头信息获取图片代码
你可以看看这个 http://hi.baidu.com/vvviop/item/162002149dc26817e3f986c0
firsthym
2013-07-08 15:03:49 +08:00
读到内存里面不行吗?
jedyu
2013-07-08 15:08:39 +08:00
@centerqi 那50=25×2还是10×5呢?
wanderer
2013-07-08 15:20:30 +08:00
@jedyu +1
dorentus
2013-07-08 16:21:45 +08:00
jpg 用 @centerqi 的方法是最不靠谱的吧……

同样一张图片,导出时选择的参数不同,可以相差很多的:

$ identify *.jpg
0.jpg JPEG 1280x720 1280x720+0+0 8-bit sRGB 126KB 0.010u 0:00.000
100.jpg[1] JPEG 1280x720 1280x720+0+0 8-bit sRGB 1.185MB 0.000u 0:00.000
50.jpg[2] JPEG 1280x720 1280x720+0+0 8-bit sRGB 280KB 0.000u 0:00.000
est
2013-07-08 17:24:40 +08:00
@centerqi 这个是你自己YY出来的吧。同一张jpeg,同一个尺寸,肉眼视网膜可以分辨完全一样的图片:

用不同scan, quant table, bit depth, color space, PPI 这些参数都能把你爆出翔。
lichao
2013-07-08 17:28:26 +08:00
@centerqi 不可能靠谱吧
yangg
2013-07-08 18:04:24 +08:00
@phuslu 为什么本地文件调用cStringIO.StringIO之后, 结果会出错?
phuslu
2013-07-08 18:25:34 +08:00
@yangg 请试下 tests 目录的代码是否能够运行,如果跑成功的话,请照那些代码来写。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/75129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX