2012-12-04 100 views
2

我在Windows下运行一个Python脚本,它处理480x800的PNG图像的32位深度。我需要检查给定的图像是否全黑。经过一番搜索后,我发现ImageMagick可以帮助我实现这一目标,但不幸的是,这种任务没有手册。检查图像是否是黑色

所以更普遍的问题是如何检查图像是否只包含一种颜色?

编辑:

我的道歉不提供所有关于从开始环境的信息。 python脚本是使用Android的monkeyrunner执行的。由于它使用它自己的Jython实例(版本2.5),因此不可能使用外部库中的任何模块。里面有一个MonkeyImage类来处理来自设备的截图。所以我通过@ eumiro的答案。

回答

3
import Image 
im = Image.load("image.png") 
diff_colors = list(set(im.getdata())) 
if len(diff_colors) == 1 and diff_colors[0] == (0, 0, 0): 
    print "all black" 

编辑为@JonClements提出,这将是更快,只要比任何其他黑色发现停止:

import Image 
im = Image.load("image.png") 
if all(rgb == (0,0,0) for rgb in im.getdata()): 
    print "all black" 
+3

'如果所有(RGB = =(0,0,0 )for im.getdata()中的rgb)'? –

+0

没有在我的环境中使用'Image'模块作为示例来解决问题,谢谢 –

+0

@AndreyErmakov这是一个有用的库('PIL') - 当然不会伤害它的安装;) –

1

我不是Python的专家,但我看到有一个PNG模块可以使用。 加载PNG并将其导出到RGB(A)阵列。

检查它是否全黑应该很简单。通过阵列,确保没有任何不同于0.

我认为这应该工作。

出于好奇,为什么要检查图像是否是黑色?