【发布时间】:2015-04-30 23:39:05
【问题描述】:
如何在不将图像保存到 osx 上的磁盘的情况下将 CGImageRef 转换为 PIL?
我想从 CGImageRef 获取原始像素数据并使用 Image.fromstring() 来制作 PIL 图像
import mss
import Quartz.CoreGraphics as CG
from PIL import Image
mss = mss.MSSMac()
for i, monitor in enumerate(mss.enum_display_monitors(0)):
imageRef = mss.get_pixels(monitor)
pixeldata = CG.CGDataProviderCopyData(CG.CGImageGetDataProvider(imageRef))
img = Image.fromstring("RGB", (monitor[b'width'], monitor[b'height']), pixeldata)
img.show()
但这并没有给我正确的图像。
这是我期望的图像:
这是我在 PIL 中得到的图像:
【问题讨论】:
-
您能否添加一个最小但完整且可重现的场景供我们测试?如果你这样做,也许你会得到更好的答案。
-
没有给出正确的图像是什么意思,它只是随机的垃圾还是看起来有点像你的图像?如果是后者,您至少可以提交预期的和实际的图像。
-
@Rachcha 我更新了正在使用的示例代码
-
@AnttiHaapala 它只是垃圾,与图像完全不同
-
我添加了我期望得到的以及 PIL 图像是什么
标签: python macos python-imaging-library cgimage python-mss