如何在Android中保存相机拍摄的图片(应用的glsl效果)?

时间:2013-08-29 11:06:32

标签: android opengl-es camera glsl glreadpixels

我已经通过OpenGL ES 2.0着色器对相机预览应用了一些效果。 接下来,我想保存这些效果图片(灰度,负片......)

我在onDrawFrame()中调用glReadPixels(),根据我从opengl帧缓冲区读取的像素创建一个位图,然后将其保存到设备存储中。

但是,通过这种方式,我只对“快照”相机效果进行预览。换句话说,保存的图像分辨率(例如:800 * 480)与Camera.PictureCallback(例如:1920 * 1080)拍摄的图像不同。

我知道setPreviewSize()可以更改预览大小,但最终不能等于图片大小。

那么,是否可以使用glsl着色器直接通过Camera.PictureCallback来发布处理过程?或者还有另一种方法可以达到同样的目标?

任何建议都将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:0)

贾斯汀,这是关于setPreviewTexture()的问题,而不是建议。如果您发送从onPreviewFrame()回调收到的像素数据,它自然会受到支持的预览尺寸的限制。

您可以使用相同的逻辑将像素从onPictureTaken()推送到纹理,但您应该将它们从JPEG格式解码为RGB。