将dict写入png文件

时间:2015-06-05 02:29:13

标签: python python-2.7

我是python的初学者,只有这种语言的基础知识,这个问题可能不是很难,但它会让我失望。

现在我有一个'dict'数据结构,我们假设它是{(0,0):'red'},只是一个元素。

我想在2D平面上绘制以点(0,0)为中心的红色单位正方形,并将结果输出为.png文件。一旦失败,人们就可以很容易地完成dict中许多点的情况。

我认为代码应该非常简单(最好不要使用libs,例如matplotlib cairo等),但我不知道如何与图形交互,任何人都可以给我一个提示吗?

我用谷歌搜索,但结果大多是matplotlib,pyplot ...使用lib文件,我认为必须有一个只有普通python代码的简单解决方案,所以我在这里发帖求助。

1 个答案:

答案 0 :(得分:-1)

我个人认为cairo是最容易的。您只需要设置画布并用形状填充它。对于矩形,您需要将X,Y位置作为起点,宽度和高度才能完成绘图。颜色用于rgb float。如果要使用它们,则必须将命名颜色转换为rgb。

我为你做了一个例子:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import cairo

# You need colors in rgb floats

Dict= {(70,60): (1,1,0), (100,90): (0,1,0), (130,120): (0,0,1)}
your_dict={(0,0): (1,0,0)}

radius=10 # The radius of the dot

w=100 # width of the square
h=100 # height of the square

WIDTH, HEIGHT = 200, 200 # Canvas size

surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
context = cairo.Context (surface)

# Background Neutral Gray ----------
context.set_source_rgb(0.25, 0.25, 0.25)
context.rectangle(0, 0, WIDTH, HEIGHT)
context.fill()


# Your Square -----------------------

for e in your_dict:
    posX = e[0]
    posY = e[1]

    r = your_dict[e][0]
    g = your_dict[e][1]
    b = your_dict[e][2]

    context.set_source_rgb(r, g, b) # rgb color
    context.rectangle(posX, posY, w, h)
    context.fill()


# White Example Circle -------------------
context.set_source_rgb(1, 1, 1) # rgb color
context.arc(20, 20, 10.0, 0, 360)
context.fill()


# Dots from Dict -------------------

for e in Dict:

    posX = e[0]
    posY = e[1]

    r = Dict[e][0]
    g = Dict[e][1]
    b = Dict[e][2]

    context.set_source_rgb(r, g, b) # rgb color
    context.arc(posX, posY, radius, 0, 360)
    context.fill()

surface.write_to_png ("img.png") # Output to PNG

您将获得一张图片:http://oi59.tinypic.com/2yy2iv7.jpg