简体   繁体   中英

How to create an image with wand in python

I am trying to create an image with 4 pixels:

1 pixel in red color, 1 pixel in blue color, 1 pixel in green color, 1 pixel in white color

Code:

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')

But it only creates a transparent png . What am I doing wrong?

Wand's pixel iterators lack the ability to "sync" the color data back into ImageMagick's "authentic" pixels data-steam.

You can implement an import-pixel-data stream, like this question (similar questions get asked a lot).

Or use 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")

输出.png

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM