Sigrid Solveig Haflínudóttirupdate to currentf7e5af43 years agoHistory
103 lines · 1.9 KB · C
RawDownload
#include <jasper/jasper.h>#include <draw.h>#include <memdraw.h> static voidusage(void){	fprint(2, "usage: %s\n", argv0);	exits("usage");} voidmain(int argc, char **argv){	jas_stream_t *s;	jas_image_t *im;	jas_cmprof_t *cp;	int c, i, w, h, x, y;	jas_image_cmpttype_t comps[] = {		JAS_IMAGE_CT_RGB_R,		JAS_IMAGE_CT_RGB_G,		JAS_IMAGE_CT_RGB_B,	};	u8int *rgb;	long *b;	Memimage *m; 	ARGBEGIN{	default:		usage();	}ARGEND 	if(argc != 0)		usage(); 	memimageinit();	jas_conf_clear();	jas_conf_set_max_mem_usage(512*1024*1024);	jas_init_library();	jas_init_thread(); 	if((cp = jas_cmprof_createfromclrspc(JAS_CLRSPC_SRGB)) == nil){		werrstr("failed to create color space");		goto error;	}	if((s = jas_stream_fdopen(0, "rb")) == nil){		werrstr("failed to open");		goto error;	}	if((im = jas_image_decode(s, -1, "")) == nil){		werrstr("failed to decode: %r");		goto error;	}	jas_stream_close(s);	if(jas_clrspc_isunknown(im->clrspc_)){		werrstr("unknown color space");		goto error;	}	if((im = jas_image_chclrspc(im, cp, JAS_CMXFORM_INTENT_PER)) == nil){		werrstr("failed to change color space");		goto error;	}	w = jas_image_width(im);	h = jas_image_height(im);	if((b = malloc(w*h*sizeof(*b))) == nil){		werrstr("memory");		goto error;	}	if((rgb = malloc(w*h*3)) == nil){		werrstr("memory");		goto error;	} 	for(i = 0; i < nelem(comps); i++){		if((c = jas_image_getcmptbytype(im, comps[i])) < 0){			werrstr("failed to get component R");			goto error;		}		if(jas_image_readcmpt2(im, c, 0, 0, w, h, b) < 0){			werrstr("read component failed");			goto error;		}		for(y = 0; y < h; y++){			for(x = 0; x < w; x++)				rgb[3*(y*w + x) + 2-i] = b[y*w + x];		}	}	jas_image_destroy(im);	free(b); 	if((m = allocmemimage(Rect(0,0,w,h), RGB24)) == nil){		werrstr("memory");		goto error;	}	loadmemimage(m, m->r, rgb, w*h*3);	writememimage(1, m);	freememimage(m); 	exits(nil);error:	fprint(2, "%r\n");	exits("error");}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t