如何在 python 中使用魔杖创建图像
How to create an image with wand in python
我正在尝试创建一个 4 像素的图像:
1 个红色像素,
1个蓝色像素,
1像素绿色,
白色 1 像素
代码:
import wand.image
red = wand.image.Color('rgb(255,0,0)')
green = wand.image.Color('rgb(0,255,0)')
blue = wand.image.Color('rgb(0,0,255)')
white = wand.image.Color('rgb(255,255,255)')
myImage = wand.image.Image(width=2,height=2)
with wand.image.Image (myImage) as img:
img[0][0] = red
img[0][1] = blue
img[1][0] = green
img[1][1] = white
img.save(filename='out.png')
但它只创建了一个透明的png
。我究竟做错了什么?
Wand 的像素迭代器无法将颜色数据 "sync" 返回到 ImageMagick 的 "authentic" 像素数据流中。
您可以实现导入像素数据流,(类似的问题经常被问到)。
或使用wand.drawing.Drawing
API.
from wand.image import Image
from wand.drawing import Drawing
from wand.color import Color
with Drawing() as ctx:
colors = ["RED", "GREEN", "BLUE", "WHITE"]
for index, color_name in enumerate(colors):
ctx.push() # Grow context stack
ctx.fill_color = Color(color_name) # Allocated color
ctx.point(index % 2, index / 2) # Draw pixel
ctx.pop() # Reduce context stack
with Image(width=2, height=2, background=Color("NONE")) as img:
ctx.draw(img)
img.sample(100,100)
img.save(filename="output.png")
我正在尝试创建一个 4 像素的图像:
1 个红色像素, 1个蓝色像素, 1像素绿色, 白色 1 像素
代码:
import wand.image
red = wand.image.Color('rgb(255,0,0)')
green = wand.image.Color('rgb(0,255,0)')
blue = wand.image.Color('rgb(0,0,255)')
white = wand.image.Color('rgb(255,255,255)')
myImage = wand.image.Image(width=2,height=2)
with wand.image.Image (myImage) as img:
img[0][0] = red
img[0][1] = blue
img[1][0] = green
img[1][1] = white
img.save(filename='out.png')
但它只创建了一个透明的png
。我究竟做错了什么?
Wand 的像素迭代器无法将颜色数据 "sync" 返回到 ImageMagick 的 "authentic" 像素数据流中。
您可以实现导入像素数据流,
或使用wand.drawing.Drawing
API.
from wand.image import Image
from wand.drawing import Drawing
from wand.color import Color
with Drawing() as ctx:
colors = ["RED", "GREEN", "BLUE", "WHITE"]
for index, color_name in enumerate(colors):
ctx.push() # Grow context stack
ctx.fill_color = Color(color_name) # Allocated color
ctx.point(index % 2, index / 2) # Draw pixel
ctx.pop() # Reduce context stack
with Image(width=2, height=2, background=Color("NONE")) as img:
ctx.draw(img)
img.sample(100,100)
img.save(filename="output.png")