调整glReadPixels返回的图像大小

时间:2016-12-20 06:18:01

标签: c++ opengl

我使用glReadPixels将像素读入数组。但是这张图片的大小有点大,所以我想把它调整到特定的大小。我找不到OpenGL函数来调整图像大小。这种功能是否存在,或者我必须编写自己的函数来调整图像大小?

注意:操作系统是Ubuntu 14.04。

这是读取图像的代码。

int img_w = 640; // screen size
int img_h = 480;
uint8_t img[img_w*img_h*3];
glReadPixels(0, 0, img_w, img_h, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*)img);

// NEW image size
int new_w = 140;
int new_h = 140;
uint8_t new_img[new_w*new_h*3];
// Is there some opengl function to resize the image in `img` like:
gl_some_resize_func(img, new_w, new_h, new_img);

1 个答案:

答案 0 :(得分:-2)

不,没有。它将是某些图像处理库或您自己的库的功能,例如freeimage,openjpeg。 OpenGL执行要显示的几何体输出,而不是使用光栅图像进行操作。

可能_将图像渲染为纹理,使用比例重新取样并过滤,再次以极低的质量读取它,但不建议练习,因为与专用相比,您总是会有质量损失图书馆。在这种情况下,在移动平台上,它也将是一个组件丢失,因为当前支持16bit格式的纹理。可以完成的唯一情况是当您卸载CPU或需要渲染到纹理时,实际上以不同的方式完成。

同样,FreeImage,OpenJpeg,SDL或Qt为这项任务提供了更好的手段。