内置的MacOS屏幕捕获程序(命令移位4)有一个很好的功能,你可以点击空格键并捕获一个窗口,如下所示:
我想以编程方式查看图像目录(它们是PNG),确定它们是否有阴影,然后自动裁剪。我需要这个在Mac上运行。我想用Python写这个。有人告诉我Pillow是用Python管理图像的正确方法,但我不知道如何读取单个像素和裁剪图像。
答案 0 :(得分:0)
以下是一些建议,无论您将使用哪个库。
窗口上有不变量:4个角,标题栏大致颜色均匀,3个圆盘形按钮。
如果您可以检测到按钮和标题栏,则可以轻松找到顶角。底角与顶角对称。
可能的解决方案
使用4角,你知道窗口的边界框,你可以解决裁剪问题
答案 1 :(得分:0)
以下是使用Python Image Library和Python 2.7执行此操作的代码:
#!/usr/bin/env
# Removes the shadow from MacOS-Generated screen shots.
import Image,os
if __name__=="__main__":
image = Image.open(os.sys.argv[1])
image = image.convert('RGBA')
(width,height) = image.size
def find_first_non_alpha_x():
for i in range(width):
if image.getpixel((i,height/2))[3]==255:
return i
raise RuntimeError("No non-alpha pixels on midline")
def find_last_non_alpha_x():
for i in range(width-1,0,-1):
if image.getpixel((i,height/2))[3]==255:
return i
raise RuntimeError("No non-alpha pixels on midline")
def find_first_non_alpha_y():
for i in range(height):
if image.getpixel((width/2,i))[3]==255:
return i
raise RuntimeError("No non-alpha pixels on midline")
def find_last_non_alpha_y():
for i in range(height-1,0,-1):
if image.getpixel((width/2,i))[3]==255:
return i
raise RuntimeError("No non-alpha pixels on midline")
x1 = find_first_non_alpha_x()
y1 = find_first_non_alpha_y()
x2 = find_last_non_alpha_x()
y2 = find_last_non_alpha_y()
y = image.crop((x1-1,y1-1,x2+1,y2+1))
y.save(os.sys.argv[1]+"-cropped.png")