Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不使用图形卡直接编码到图像/JPEG?_Python_Canvas_Graphics_Tkinter_Jpeg - Fatal编程技术网

Python 不使用图形卡直接编码到图像/JPEG?

Python 不使用图形卡直接编码到图像/JPEG?,python,canvas,graphics,tkinter,jpeg,Python,Canvas,Graphics,Tkinter,Jpeg,我是编程新手,也许我需要一本计算机科学基础入门课程的参考书,所以如果你能告诉我,我会很高兴的。但我的问题是: 我使用Python。我想说的代码是800x800图像文件JPEG或PNG或PDF。不管它是什么,我希望能够指定哪些像素点在哪里,或者如果不是那么具体,也许能够画线、圆,将图像插入画布,然后将其导出到图像文件JPEG等 我该怎么做 我知道我可以使用pygame和/或tkinter在画布上创建东西,然后将其写入文件。然而,这是使用图形卡渲染图像,显示它,然后保存它。对的这就是过程的运作方式吗

我是编程新手,也许我需要一本计算机科学基础入门课程的参考书,所以如果你能告诉我,我会很高兴的。但我的问题是:

我使用Python。我想说的代码是800x800图像文件JPEG或PNG或PDF。不管它是什么,我希望能够指定哪些像素点在哪里,或者如果不是那么具体,也许能够画线、圆,将图像插入画布,然后将其导出到图像文件JPEG等

我该怎么做

我知道我可以使用pygame和/或tkinter在画布上创建东西,然后将其写入文件。然而,这是使用图形卡渲染图像,显示它,然后保存它。对的这就是过程的运作方式吗?Python或任何其他带有API的程序在画布上绘制东西,像Tkinter这样的接口在画布上绘制东西,将信息发送到图形卡以显示,然后我们将原始像素“导出”到图像/JPEG文件。对吧?

第二个问题是,是否有一种方法可以对画布进行编码以排列项目并将其保存到文件中?没有看到它?不涉及图形卡?

安装。那么


您可以使用创建画布并在其上放置各种形状和元素。拥有一个图形卡和一个显示器就可以实现更大的交互性和反馈。要将结果保存到图像,请参见。我发现canvas.postscript方法很有效。

我想你应该看的第一个链接是为什么你安装了枕头,但你仍然需要导入PIL?这似乎是个糟糕的设计。@Rinzler:好吧,PIL的工作被放弃了,所以有人用叉子叉了它,称它为枕头。保留模块名称是为了向后兼容。但别搞错了,我不是在进口PIL,我是在进口枕头。我知道。但他们可以给它起个新名字。向后兼容性似乎不是问题,因为Python3代码大部分不会与Python2解释器一起运行,所以我们为什么要关心兼容性呢?无论如何,它也应该遵循Python的模块名称约定,使用小写:从pil导入图像或从枕头导入任何东西…@Rinzler:哦,这就是你的意思。我以为你在问我为什么我建议安装一个软件包,但却从未使用过,而是导入了另一个看似无关的软件包。我不是枕头维护者,你在抱怨一个错误的人:@Amadan谢谢你。这很有帮助。但这里有一个后续问题。我想我只是想知道这一切是如何“在幕后”完成的。以PIL为例,解释器是否创建800x600 pixles窗口并在pixles 7995999 1处填充一行?这堆数据会被发送到显卡吗?这就是它的工作原理吗?我应该研究一下JPEG算法来理解这一点。请指导我正确的方向,这样我可以做更多的研究。我只是不知道谷歌要找出这个关键术语。非常感谢。
from PIL import Image, ImageDraw

image = Image.new("RGB", (800, 600), (255,255,255,0))
draw = ImageDraw.Draw(image)
draw.line([(0, 0), (799, 599)], (0, 0, 0, 0), 1)
image.save("test.jpg", "JPEG")