This article is more than five years old and potentially contains out-dated information.
작성한지 5년 이상 지난 게시물입니다. 최신의 정보와 맞지 않는 내용을 포함할 수도 있습니다.

This is a slight modification of a part of my computer vision homework, so you might see some functions that appear to be unnecessarily complicated.

You will need following Python packages.

from random import randint
from numpy import matrix, empty, uint32
from PIL import Image

def generate_random_spectrum(n):
    """Generates random light spectrum, where n is the number of elements in the row vector."""
    return map(lambda x: randint(0, 0xFFFFFF), xrange(n))

def fill_image_buffer(data, data_shape, m):
    """ data_shape: Conceptual data array size (h, w)
        m: Magnification"""
    array = empty((data_shape[1]*m, data_shape[0]*m), uint32)
    for i in xrange(data_shape[0]):
        for j in xrange(data_shape[1]):
            rgb = data[i*data_shape[1] + j]
            array[i*m:i*m+m, j*m:j*m+m] = 0xFF000000 + rgb

    return array

def save_image(shape, data, filename):
    im = Image.frombuffer('RGBA', shape, data, 'raw', 'RGBA', 0, 1)
    im.save(filename)

spectra = generate_random_spectrum(1600)
buf = fill_image_buffer(spectra, (40, 40), 10)

save_image((400, 400), buf, 'random.png')