0

私がやろうとしているのは、次のような指定されたパラメーターを使用してpng画像を作成することです:

img = Image(200, 100, Color(0, 0, 255))
h_line(img, 20, Color(255, 0, 0))
c = img.get_pixel(20, 20)
c.b = 200
img2 = img.copy()
h_line(img, 40, Color(255, 0, 0))
save('file01_01_out.png', img)

これは私がこれまでに書いたものです:

    import png

class Color(object):
    def __init__(self, r, g, b):
        self.r = r
        self.g = g
        self.b = b

    def copy(self):
        return Color(self.r, self.g, self.b)

class Image(object):
    #'''Class must have height and width attributes'''
    def __init__(self, width, height, c):
        self.width = width
        self.height = height
        self.c = Color
        #'''Initializes the image with width, height and every pixel with copies of c
       # c being an object of Color type'''
 #    

    def set_pixel(self, x, y, c):
        self.img.put("{" + c +"}", (x, y))
       # '''Sets the color in position (x, y) with a copy of object
        #    c of type Color. If the position (x, y) is beyond the
        #    object, then it won't do anything'''

    def get_pixel(self, x, y):
        value = self.img.get(x,y) 
        if type(value) ==  type(0):
            return [value, value, value]
        else:
            return None 
#        '''Returns a copy of the color (Color type) in position
#           (x, y). If (x, y) is beyond the picture, it will return
#           None'''

    def copy(self):
        return Image(self.width, self.height, self.c)


def h_line(img, y, c):
    for x in range(img.width):
        img.set_pixel(x, y, c)

def save(filename, img):
    png_img = []
    for i in range(img.height):
        png_row = []
        for j in range(img.width):
            c = img.get_pixel(j, i)
            png_row.extend([c.r, c.g, c.b])
        png_img.append(png_row)
    with open(filename, 'wb') as f:
        png.Writer(img.width, img.height).write(f, png_img)

問題は、プログラムがクラッシュすることはありませんが、何も保存されないことです! さまざまな例で試しましたが、結果は常に同じです。私は何を間違っていますか?

4

1 に答える 1

1

更新 - Py3 タグに気づいたので、答えが有効ではない可能性がありますが、何らかの用途がある可能性があります

例として、PILを使用して、特定の RGB カラーで 200x200 の画像を作成し、.png拡張子を付けて保存することができます...

>>> from PIL import Image
>>> img = Image.new('RGB', (200, 200), (127, 127, 127))
>>> img.save('/path/to/some/file.png')

あなたにあげる:

サンプル画像

于 2012-12-23T19:54:58.173 に答える