我试图使用PIL.ImageGrab.grab()捕获我的屏幕图像。
这是我的问题 - 当我使用下面的代码时,img
只是我屏幕的左上角。
from PIL import ImageGrab
img = ImageGrab.grab()
使用win32api.GetSystemMetrics()
查找我的屏幕尺寸。
> GetSystemMetrics(0)
Out[6]: 1280
> GetSystemMetrics(1)
Out[7]: 720
然后我使用ImageGrab.grab((0,0,1280,720))
,仍然在屏幕的左上角!绝望地,我打电话给ImageGrab.grab((0,0,1400,900))
,输出是相同的部分图像,右下方有一个黑框......
我不知道发生了什么。似乎其他人只需拨打ImageGrab.grab()
即可捕获他们的屏幕。
任何帮助将不胜感激!
答案 0 :(得分:1)
当我尝试按照本教程https://code.tutsplus.com/tutorials/how-to-build-a-python-bot-that-can-play-web-games--active-11117时,我在PIL上遇到了同样的问题。
要解决此问题,
- > 转到Python安装的目录并右键单击python.exe
- > 属性 - > 兼容性选项卡 - > 选中“在高DPI设置下禁用显示缩放”。
对pythonw.exe重复相同的步骤。希望你的问题得到解决请告诉我。
答案 1 :(得分:0)
以josh pointed out,<code>
2019-03-02 17:25:37.140 28705-28705/com.sarkerjr.greenBlood E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sarkerjr.greenBlood, PID: 28705
android.content.res.Resources$NotFoundException: String resource ID #0x2
at android.content.res.Resources.getText(Resources.java:339)
at android.content.res.Resources.getString(Resources.java:433)
at android.content.Context.getString(Context.java:556)
at com.sarkerjr.greenBlood.MainActivity.displayDatabaseInfo(MainActivity.java:121)
at com.sarkerjr.greenBlood.MainActivity.access$000(MainActivity.java:21)
at com.sarkerjr.greenBlood.MainActivity$2.onClick(MainActivity.java:56)
at android.view.View.performClick(View.java:6294)
at android.view.View$PerformClick.run(View.java:24770)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
</code>
There is a working workaround for this without fiddling with the OS settings. The solution is to use the following to make your program DPI aware on Windows:
由josh