This is how I have done it. I use the libjpeg and decompress the image data thru jpeg_read_scanlines(). It puts one line of image in the memory pointed by buffer. I do the same for all the scanlines. At the same time I keep putting it into the rgbbuf. The rgbbub is a buffer reserving three bytes per pixel, for whole of the image. I do the memcpy() and place these pixes in the rgbbuf. Then I call gdk_draw_rgb_image to render the picture on the screen. Here are some sample lines from my code: guchar *rgbbuf; JSAMPARRAY buffer; struct jpeg_decompress_struct cinfo; ................ rgbbuf = (unsigned char *) malloc( imgwidth * imgheight * 3); ................. while (cinfo.output_scanline < cinfo.output_height) { ptr = nscanline * row_stride; jpeg_read_scanlines (&cinfo, buffer, 1); memcpy( &rgbbuf[ptr], (guchar *) buffer[0], bpix * cinfo.output_width); nscanline++; } ................. //da is actually drawing_area widget gdk_draw_rgb_image (da->window, da->style->fg_gc[GTK_STATE_NORMAL], x, y, imgwidth, imgheight, GDK_RGB_DITHER_MAX, (guchar *) rgbbuf, imgwidth * 3 ); //your message I'd need to display some (256x256) JPG files retrieved from a database (text-encoded). Encoding to/from text is not the issue. The issue is making gdk-pixbuf load'em whithout having to write a file. Is it possible? __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com