Converting XImage to PNG


 
Thread Tools Search this Thread
Top Forums Programming Converting XImage to PNG
# 1  
Old 12-16-2010
Converting XImage to PNG

i was able to make a connection to X server and get a screen shot using XGetImage, now, im unable to save this XImage to any good format like PNG, i found a code that saves it to bitmap, but the resulted bitmap file is massive, is there anyway i can save this XImage to PNG directly?

thanks;
# 2  
Old 12-16-2010
# 3  
Old 12-16-2010
i got no idea how to do it using any lib, u know how to?

---------- Post updated at 08:10 PM ---------- Previous update was at 02:34 PM ----------

i found this code
Code:
int
write_jpeg(FILE *outfile, int width, int height, unsigned char *rgb,
           int quality)
{
    struct jpeg_compress_struct cinfo;
    struct jpeg_error_mgr jerr;
    JSAMPROW scanline[1];
    cinfo.err = jpeg_std_error(&jerr);
    jpeg_create_compress(&cinfo);
    jpeg_stdio_dest(&cinfo, outfile);
    cinfo.image_width = width;
    cinfo.image_height = height;
    cinfo.input_components = 3;
    cinfo.in_color_space = JCS_RGB;
    jpeg_set_defaults(&cinfo);
    jpeg_set_quality(&cinfo, quality, TRUE);
    jpeg_start_compress(&cinfo, TRUE);
    while (cinfo.next_scanline < (unsigned int) height)
    {
        scanline[0] = rgb + 3 * width * cinfo.next_scanline;
        jpeg_write_scanlines(&cinfo, scanline, 1);
    }
    jpeg_finish_compress(&cinfo);
    jpeg_destroy_compress(&cinfo);
    return(1);
}

whats the rgb i need to provide? ive XImage struct
# 4  
Old 12-17-2010
You have lots of work to do to programmatically convert an XImage to PNG or any one of the other public formats. Best go explore what existing libraries such as Cairo do. For example see _get_image_surface() in cairo-xlib-surface.c.
# 5  
Old 12-17-2010
is there even any example of converting bitmap images to jpg or gif or png? i couldn't find any examples to learn from...

thanks
# 6  
Old 12-17-2010
Sure, lots out there. Koders.com is your friend for source code. Better than Google. For example here is how to convert to PNM format. Part of xgame/ximages.c.

Code:
save_ximage_pnm(XImage *img,char *pnmname,int type) {
	int x,y;
	unsigned long pixel;
	FAIL_ON(!img || !pnmname || type<=0, "bad argument(s)"); 

	fprintf(stdout,"P%d\n%d %d\n255\n",type,img->width, img->height);
	for (y=0; y<img->height; y++) {
		for (x=0; x<img->width; x++) {
			pixel=XGetPixel(img,x,y);
			if (type==ASCII_PPM) {
				fprintf(stdout,"%ld %ld %ld\n",
						pixel>>16,(pixel&0x00ff00)>>8,pixel&0x0000ff);
			} else if (type==BINARY_PPM) {
				fprintf(stdout,"%c%c%c",
					(char)(pixel>>16),
					(char)((pixel&0x00ff00)>>8),
					(char)(pixel&0x0000ff) );

			} else {
				fprintf(stderr,"PnM type %d not supported!",type);
				return(0);
			}
		}
	}
	return(1);
}

Once your image is in PNM format, it is easy to convert to most other formats.

If you use the Firefox web browser, you can add a domain specific searchbar to help with source code searches. See https://addons.mozilla.org/en-US/fir...koders&cat=all
# 7  
Old 12-17-2010
Quote:
Originally Posted by JonhyM
is there even any example of converting bitmap images to jpg or gif or png? i couldn't find any examples to learn from...

thanks
A while ago I wrote xtopng which can read any format SDL_image is capable of loading and save to PNG. Whether SDL_image supports ximage may depend on your system.

saving to png is probably loads easier than jpg or gif. png is open-source, lossless, and can represent lots of different bit formats.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need Help in converting

I have Excel file with the below three columns, i need your expertise in converting this to .csv file delimiter "|" Excel - Serial Number Serial Name Serial Brand 111 test sample 123 test2 sample1 134 ... (9 Replies)
Discussion started by: kiran_hp
9 Replies

2. Shell Programming and Scripting

Mailing multiple PNG attachments using sendmail

Need assistance in using the below script and having multiple png file attachments in the same script . Your inputs are appreciated. I dont have uuencode , I use either mailx, sendmail, mpack . ( echo "to: samplemail@somewhere.com" echo "from: samplemail@elsewhere.com" echo "subject:... (2 Replies)
Discussion started by: ajayram_arya
2 Replies

3. Shell Programming and Scripting

Sendmail Png Attachments

I use sendmail to send html emails, my script works perfect and sends email with plain text attachment. Now i need to attache png file to the email and this attachment part is not working. ( echo "From: $FROM" echo "To: $TO" echo "MIME-Version: 1.0" echo "Subject: $SUBJECT" echo... (4 Replies)
Discussion started by: posner
4 Replies

4. Windows & DOS: Issues & Discussions

Super Simple Script to remove first characters of any png file

Well I searched the net with varying success, but it seems kinda hard to find a one/max 2 lined command to: strip all *.png files in the folder from their first two characters. Any help is appreciated. In DOS commandline of course... (17 Replies)
Discussion started by: pasc
17 Replies

5. Shell Programming and Scripting

Loop through directory convert jpg to png

Hi guys. I will be frequently needing to convert .jpg files to 183x183 .png thumbnails. I can't quite seem to wrap my head around how to make a for loop to do this. With the help of my friend (who may have mislead me, I'm quite confused) I've got this. This is bash the command is: pngify... (3 Replies)
Discussion started by: Drayol
3 Replies

6. Programming

Changing BPP in XImage

im trying to take a 24 BPP screen cap and save it to bitmap, but seems like it XImage is always 32 BPP, the value 0x00FFFFFF supposed to be 24 ! whenever i change bmpInfoHeader.biBitCount to 24, the image gets messed up.. here is the code im using typedef struct tagBITMAPFILEHEADER {... (5 Replies)
Discussion started by: JonhyM
5 Replies

7. Shell Programming and Scripting

cgi script to print all .png files on a single page

Hi guys I'm relativley new to Perl, and have not touched html before, im trying to write a cgi script that prints all images on a single html page from a given directory. Im using perl to gather stats, rrdtool to update and create graphs now i just need to print these graphs all onto 1 index.cgi... (3 Replies)
Discussion started by: jeffersno1
3 Replies

8. Shell Programming and Scripting

makefile to convert .jpeg to .png thumnails

Hello! I'm desperately trying to write a makefile that converts and scales jpeg files to png files in subdirectories I want to use netpbm, so I just need the commands: anytopnm pnmscale pnmtopng For various reasons i want to use a makefile. This is the first time i use the make tool... (1 Reply)
Discussion started by: henningbaer
1 Replies

9. UNIX for Dummies Questions & Answers

converting kb to mb

When I create filesystems in AIX i often get confused(using smit) When you specify size in aix, it is asked like this SIZE of file system (in 512-byte blocks) I never seem to grasp this, what is the equation to get say 500mb? Or is there a program anyone knows of that does this, like a... (1 Reply)
Discussion started by: csaunders
1 Replies
Login or Register to Ask a Question