2015-03-25 36 views
-6

我是编程新手,也许我需要参考一门基础的计算机科学入门课程,所以如果你能指导我,我会很高兴。但这里是我的问题:直接编码到没有图形卡的图像/ JPEG?

我使用Python工作。我想代码说一个800x800的图像文件(JPEG或PNG或PDF)。不管它是什么,我希望能够指定哪些像素走哪里或者哪些不是特定的,也许能够绘制直线,圆形,将图像插入到画布上,然后将其导出到图像文件(JPEG等)。

我如何做到这一点?

我很清楚我可以使用pygame和/或tkinter在画布上创建事物,然后将其写入文件。然而,这是使用图形卡来渲染图像,显示它,然后保存它。正确?这个过程是如何工作的? Python(或任何其他具有API的程序)在画布上绘制东西,像Tkinter这样的界面在画布上绘制出来,将信息发送到显卡来显示,然后将原始像素“导出”为图像/ JPEG文件。对?

第二个问题是,有没有办法编写画布来排列项目并将其保存到文件?没有看到它?不涉及显卡?

+2

我想你应该看的第一个链接是http://stackoverflow.com/help/how-to-ask – jonrsharpe 2015-03-25 00:52:13

回答

3

安装Pillow。然后,

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") 
+1

为什么你要安装'Pillow',但你仍然需要导入'PIL'?这似乎是不好的设计。 – nbro 2015-03-25 02:16:59

+1

@Rinzler:AFAIK,PIL的工作被放弃了,所以有人将它分叉并称之为Pillow。模块名称保持向后兼容。但请不要误解,我不输入PIL,我正在输入Pillow。 – Amadan 2015-03-25 02:19:36

+1

我知道。但他们可以给它一个新的名字。向后兼容性似乎不是问题,因为Python 3代码不会主要运行在Python 2解释器上,所以我们为什么要关心兼容性?无论如何,它也应该遵循Python的模块名称约定,使用小写字母:'从pil导入图像'或'从枕头导入任何'...# – nbro 2015-03-25 02:28:38

0

可以使用Canvas widget创建一个画布,并把各种形状和元素就可以了。拥有图形卡和显示器只是允许更多的交互性和反馈。要将结果保存到图像,请参阅this question。我发现canvas.postscript()方法是有效的。

相关问题