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; }
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); }