On 2010-07-21 5:12, Andrew wrote:

#!/usr/bin/env python
import gtk
from gtk import gdk as gdk

small = 16
counter = 0
offset = 4
large = 24

if __name__ == "__main__":

     icon_theme = gtk.icon_theme_get_default();

     small_pixbuf = icon_theme.load_icon("image", small, ());

     large_pixbuf = icon_theme.load_icon("image", large, ());

     large_pixbuf.fill(0x000000);

     small_pixbuf_buffer = small_pixbuf.copy()
     small_pixbuf.composite(large_pixbuf, 0, 0, 24, 24, 0, 0, 1, 1,
gdk.INTERP_NEAREST, 255);
     small_pixbuf_buffer = small_pixbuf.copy()
     small_pixbuf.composite(large_pixbuf, 0, 0, 24, 24, 4, 4, 1, 1,
gdk.INTERP_NEAREST, 255);
     small_pixbuf_buffer = small_pixbuf.copy()
     small_pixbuf.composite(large_pixbuf, 0, 0, 24, 24, 8, 8, 1, 1,
gdk.INTERP_NEAREST, 255);

     window = gtk.Window()
     image = gtk.Image()
     image.set_from_pixbuf(large_pixbuf)
     window.add(image)
     window.show_all()
     window.connect("delete-event", gtk.main_quit)
     gtk.main()


Sorry to BUMP this guys but does anyone have any idea why this is
happening, your reply doesn't have to be a fix. Any bugs/documentation
you can point me to?


Make doubly sure that both the large and small pixbufs have an alpha channel.

Don't specify a destination rectangle larger than the scaled source pixbuf. That seems to pull in random data rather than blank space.

The following seems to work for me:

  large = gtk.gdk.Pixbuf('rgb', True, 8, 30, 30)
  large.fill(0)
  small = widget.render_icon('gtk-ok', 'button') # 20-by-20
  assert large.get_has_alpha()
  assert small.get_has_alpha()
  small.composite(large, 0, 0, 20, 20, 0, 0, 1, 1, 'nearest', 255)
  small.composite(large, 5, 5, 20, 20, 5, 5, 1, 1, 'nearest', 255)
  small.composite(large, 10, 10, 20, 20, 10, 10, 1, 1, 'nearest', 255)
  large.save('test.png', 'png')

--
Tim Evans
Applied Research Associates NZ
http://www.aranz.com/
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/

Reply via email to