我试图用python创建一些perlin噪声图像,但有一点问题。我在运行我的小脚本时遇到了一个异常。很明显,我没有掌握映像模块的用法,因为我尝试的所有操作都会导致ValueError异常,并显示消息“buffer is not large tooth”
到目前为止,我得到的是:
import numpy
from noise import pnoise2, snoise2
import Image
octaves = 1
freq = 16.0 * octaves
y_max = 5
x_max = 5
imarray = [[0 for x in range(y_max)] for x in range(x_max)]
totalcount = 0
for y in range(y_max):
for x in range(x_max):
val = "%s\n" % int(snoise2(x / freq, y / freq, octaves) * 127.0 + 128.0)
imarray[y][x] = val
totalcount += 1
arr = numpy.asarray(imarray).astype('uint8')
im = Image.fromarray(arr, 'RGBA')
im.save('./blah.png')
我得到的例外是:
^{pr2}$
问题是您要求
PIL
创建一个新的'RGBA'
图像,这需要4个通道,但您只传递一个二维数组,例如一个通道。在如下图所示,给定这些数组:
创建灰度
^{pr2}$'L'
图像:创建没有alpha通道的彩色图像
'RGB'
:注意RGB模式的用法,因为您可能不关心alpha通道,否则只需向
numpy.zeros
构造函数添加其他维度。在你可以把你的代码重写成
生成灰度图像。在
相关问题 更多 >
编程相关推荐