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