当前位置: 首页 > 面试题库 >

在Python中,如何直接在屏幕上绘制像素?

须原
2023-03-14
问题内容

我要执行以下操作:

...
pixel[0,0] = [ 254, 0, 0 ] # Draw R at pixel x0y0
pixel[2,1] = [ 0, 254, 0 ] # Draw G at pixel x2y1
pixel[4,2] = [ 0, 0, 254 ] # Draw B at pixel x4y2
...

我希望在短时间内显示许多不同的像素和颜色配置-写入中间文件会太昂贵。

我如何最好地实现Python中的这一目标?


问题答案:

直接回答:

这只能通过特定于操作系统的API来完成。某些操作系统不允许直接更改屏幕上的像素。

在Windows上,您可以使用pywin32库通过dc = GetDC(0)调用获取屏幕的设备上下文,然后使用绘制像素SetPixel(dc, x, y, color)

import win32gui
import win32api

dc = win32gui.GetDC(0)
red = win32api.RGB(255, 0, 0)
win32gui.SetPixel(dc, 0, 0, red)  # draw red at 0,0

当然,以这种方式绘制的内容可以随时删除。

正确答案:

逐像素绘制是最慢的绘制方法。例如,在Windows上,在内存中创建图像然后在一个操作中进行绘制比使用SetPixel进行绘制要快几个数量级。

如果需要速度,请为python使用一些用户界面库,例如Tkinter模块或PyQt。在内存中创建一个窗口和图像,然后在窗口上绘制图像。如果需要操纵像素,请操纵图像中的像素并每次重新绘制。



 类似资料:
  • 问题内容: 我设法将一个脚本接收到一个字符串,该脚本从iOS应用程序接收设置速度和方向的命令。 问题是我没有实际的设备,所以我的应用程序将命令发送到我构建的一个使用龙卷风的小型python Web套接字服务器… 本质上,我理想中需要的是一种方法: 显示窗口每隔17毫秒,清除一次窗口,读取带有x和y的全局变量,并在x和y处绘制点或圆。 有没有方便的方法可以做到这一点,以便我可以直观地看到发生了什么?

  • 问题内容: 最近,我对一个奇怪的想法感到震惊,他想从/ dev / urandom中获取输入,将相关字符转换为随机整数,然后使用这些整数作为像素rgb / xy值来绘制到屏幕上。 我已经做过一些研究(在StackOverflow和其他地方),许多建议您可以直接直接写入/ dev / fb0,因为它是设备的文件表示形式。不幸的是,这似乎没有产生任何视觉上明显的结果。 我找到了一个来自QT教程(不再可

  • 问题内容: 我正在使用PIL库进行一些图像编辑。关键是,我不想每次都将图像保存在HDD上以在资源管理器中查看它。是否有一个小模块可以使我设置窗口并显示图像? 问题答案: 从PIL教程中: 一旦有了 Image 类的实例,就可以使用该类定义的方法来处理和操纵图像。例如,让我们显示刚刚加载的图像: 更新: 如今,该方法已正式记录在PIL的Pillow分支中,并说明了如何在不同的OS上实现该方法。

  • 现在,我正在使用CustomView在画布上绘制,我需要将画布(可能作为位图)保存到FileOutputStream中,然后移动到另一个具有相同功能的CustomView。 我不确定我是否应该使用不同的方法来实现它,但是我正在做的任何事情都在我调用start Active(i)时崩溃。 我的理解是,我的CustomView是用onTouch()绘制的,它绘制到路径对象上,然后调用onDraw(ca

  • 给定一个信号的时间表示图,如何画出相应的时间指标线? 具体来说,给定一个时间索引范围为0到2.6(s)的信号图,我想画垂直红线,指示列表的相应时间索引,我该怎么做?

  • 问题内容: 我需要能够以编程方式在图像上进行绘制,并保存该图像以备后用。说,在图像上的特定x和y坐标上画一条线,保存图像,并将其显示在简单的视图控制器上。我将如何在Swift中进行此操作?(最好是Swift 2,我仍在开发中,还没有将我的mac更新到Sierra) 更新:可能与将UIImage转换为CGLayer,在其上绘制然后再将其转换回UIImage有关。 问题答案: 这很简单: 设置图像图形