All pastes #147851 Raw Edit

Something

public cpp v1 · immutable
#147851 ·published 2006-08-24 18:21 UTC
rendered paste body
	this(char[] file, int sizelimit) {		filename=file.dup;		gdImage *pic;		int filesize=cast(int)getSize(file); void[] data=read(file);		char[] extension=filename[rfind(filename, ".")+1..length];		if (icmp(extension, "png")==0)			pic=gdImageCreateFromPngPtr(filesize, data);		else if ((icmp(extension, "jpg")==0)||(icmp(extension, "jpeg")==0))			pic=gdImageCreateFromJpegPtr(filesize, data);		else if (icmp(extension, "gif")==0)			pic=gdImageCreateFromGifPtr(filesize, data);		else {			writeflnt("Was ", extension);			assert (false);		}		delete data[];		uint thumb_x=sizelimit; uint thumb_y=sizelimit; 		if (pic.sx>pic.sy)			thumb_y=cast(uint)(cast(float)sizelimit*(cast(float)pic.sy/cast(float)pic.sx));		else			thumb_x=cast(uint)(cast(float)sizelimit*(cast(float)pic.sx/cast(float)pic.sy));		gdImage *tn=gdImageCreateTrueColor(thumb_x, thumb_y);		gdImageCopyResampled(tn, pic, 0, 0, 0, 0, thumb_x, thumb_y, pic.sx, pic.sy);		int size=0; void* buf=gdImagePngPtr(tn, &size);		pngData.length=size; pngData[]=cast(char[])buf[0..size];		gdFree(buf);		gdImageDestroy(tn); gdImageDestroy(pic);	}