Hi Paul.

On Fri, Sep 26, 2008 at 8:56 AM, paul taney <[EMAIL PROTECTED]> wrote:
> Why does he multiply the image by 256 and elsewhere divide image/256?
He's expecting an image with values ranging 0..1. If the values you
are providing are 0..255, you'll need to remove both of those.
>
>>
>> Which assertion fails?
>
> Line 207:  assert(byte_image.size == width * height * bpp)
> fails, right before the blit.
>
>> >
>> >
>> > def write_out(drawable, image):
>> >    """by John Fremlin"""
>> >    byte_image =
>> numpy.array((image*256).round(0),"B")  # B is a
>> ubyte
>> >    width = drawable.width
>> >    height = drawable.height
>> >    bpp = drawable.bpp
>> >    sys.stderr.write("write_out::drawable.width=%i
>> drawable.height=%i drawable.bpp=%i\n" % (width,
>> height, bpp))
>> >
>> >    pr = drawable.get_pixel_rgn(0, 0, width, height,
>> True)
>> >    assert(byte_image.size == width * height * bpp)
>> >    pr[:,:] = byte_image.tostring()  # blit
>>
>> You are passing an RGB array to this function. Are you
>> certain that
>> your destination drawable does not have an alpha channel
>> (thus requiring you to pass an RGBA array)?
>>
>
> I have added a test for that, as best I know how;  but it
> still fails at 207.
>
>    if drawable.has_alpha:
>        img = gimp.Image(width, height, RGBA_IMAGE)
>        new_layer = gimp.Layer(img, new_layer_name, width, height,
>                               RGBA_IMAGE, opacity, NORMAL_MODE)
>    else:
>        img = gimp.Image(width, height, RGB_IMAGE)
>        new_layer = gimp.Layer(img, new_layer_name, width, height,
>                               RGB_IMAGE, opacity, NORMAL_MODE)
>
>

This will not necessarily help, because your vanderwalt() routine is
still producing an RGB image always.

David

-- 
Everything has reasons. Nothing has justification.
Ĉio havas kialojn; Neniaĵo havas pravigeron.
_______________________________________________
Gimp-developer mailing list
[email protected]
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

Reply via email to