Pet*_*ter 10 python python-imaging-library
我想要使用图像处理一个想法,但是我不能让它正确地写出像素值,它总是只是灰色,带有一些像人工制品一样的图案,无论我尝试什么,人工制品都会改变,但图像仍然存在灰色.
这是我的基本代码:
from PIL import Image
data = ""
for i in range( 128**2 ):
data += "(255,0,0),"
im = Image.fromstring("RGB", (128,128), data)
im.save("test.png", "PNG")
Run Code Online (Sandbox Code Playgroud)
http://effbot.org/imagingbook/pil-index.htm中没有关于如何格式化的信息data,所以我尝试使用0-1,0-255,00000000-111111111(二进制),括号,方形括号,没有括号,alpha的额外值以及将RGB更改为RGBA(将其变为浅灰色但是就是这样),逗号之后,之后没有逗号,但绝对没有任何效果.
为了记录,我不想只存储一种颜色,我只是这样做,以便最初使它工作.
Kev*_*vin 13
格式字符串应排列如下:
"RGBRGBRGBRGB ......"
其中R是表示特定像素的红色值的单个字符,对于G和B是相同的.
"但255是三个字符长,我怎么能把它变成一个字符?" 你问.用chr你的数字转换成字节值.
from PIL import Image
data = ""
for i in range( 128**2 ):
data += chr(255) + chr(0) + chr(0)
im = Image.fromstring("RGB", (128,128), data)
im.save("test.png", "PNG")
Run Code Online (Sandbox Code Playgroud)
结果:

替代方案:
fromstring如果您的数据尚未采用该格式,则使用是一种相当迂回的方式来生成图像.相反,请考虑使用Image.load直接操作像素值.然后你不必做任何字符串转换的东西.
from PIL import Image
im = Image.new("RGB", (128, 128))
pix = im.load()
for x in range(128):
for y in range(128):
pix[x,y] = (255,0,0)
im.save("test.png", "PNG")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14583 次 |
| 最近记录: |