我具有以下功能:
def take_screenshot(x1, y1, x2, y2):
img = ImageGrab.grab(bbox=(x1, y1, x2, y2))
return img
当我使用以下方法保存图像时:
img = take_screenshot(10, 10, 200, 200)
img.save("test.png")
我认为Pill使用32位作为所有内容的默认设置。我不明白如何将其保存为24位而不是32位。
答案 0 :(得分:2)
来自documentation
PIL.ImageGrab.grab(bbox=None)
拍摄屏幕快照。边框内的像素在Windows上以“ RGB”图像或在macOS上以“ RGBA”的形式返回。
您还可以查看源代码here
在Windows上,它严格uses RGB(24位) 大小,数据=抓手()
im = Image.frombytes(
"RGB", size, data,
# RGB, 32-bit line padding, origin lower left corner
"raw", "BGR", (size[0]*3 + 3) & -4, -1
)
如果要求具有32位图像,则可以使用将该图像转换为RGBA(32位)
img = take_screenshot(10, 10, 200, 200)
img = img.convert("RGBA")
img.save("test.png")