我有一个相机向SurfaceView发送帧。我想从表面视图中获取这些帧并将它们发送到其他地方。在最终形式中,图像必须是JPEG格式。为了实现这一点,我将从byte []创建一个YUV图像,然后调用compressToJpeg
。但是,当我在每一帧上调用compressToJpeg
而不是只显示它时,我的FPS从~30变为~4。我评论了其他行,这个功能似乎是罪魁祸首。
public void onNewRawImage(byte[] data, Size size) {
// Convert to JPG
YuvImage yuvimage=new YuvImage(data,
ImageFormat.NV21, size.width, size.height, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, yuvimage.getWidth(),
yuvimage.getHeight()), 80, baos);
byte[] jdata = baos.toByteArray();
// Convert to Bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);
}
是否可以以JPEG格式开始而不必转换为它?我希望我在某个地方犯了错误。非常感谢任何帮助,谢谢。