Example #1
0
IOIMAGE_API IoImage *IoImage_newWithImage_(void *state, Image* image)
{
	IoImage* self = IoImage_new(state);
	DATA(self)->image = image;
	DATA(self)->buffer = IoSeq_newWithData_length_(state, Image_data(image), Image_sizeInBytes(image));
	Image_setExternalUArray_(image, IoSeq_rawUArray(DATA(self)->buffer));
	return self;
}
Example #2
0
void Image_resizeTo(Image *self, int w, int h, Image *outImage)
{
	int componentCount = self->componentCount;

	int inStride = self->width * componentCount;
	uint8_t *inPtr = Image_data(self);

	int outStride = w * componentCount;
	uint8_t *outPtr;
	int y;
	
	UArray *outUArray = UArray_new();
	UArray_setSize_(outUArray, h * outStride);
	outPtr = (uint8_t *)UArray_bytes(outUArray);

	for (y=0; y < self->height; y++, inPtr += inStride, outPtr += outStride)
		memcpy(outPtr, inPtr, inStride);

	Image_setData_width_height_componentCount_(outImage, outUArray, w, h, componentCount);
}