相关疑难解决方法(0)

将位图数组转换为YUV(YCbCr NV21)

如何将返回的Bitmap转换BitmapFactory.decodeFile()为YUV格式(simillar到相机的onPreviewFrame()返回字节数组)?

android image-processing yuv android-image android-camera

27
推荐指数
2
解决办法
4万
查看次数

Yuv(NV21)图像转换为位图

我正在尝试从相机预览中捕获图像并对其进行绘制.问题是,我只有大约3-4 fps的绘图,并且一半的帧处理时间是从摄像机预览接收和解码NV21图像并转换为位图.我有一个代码来执行此任务,我在另一个堆栈问题上找到了该代码.它似乎并不快,但我不知道如何优化它.三星Note 3需要大约100-150毫秒,图像尺寸为1920x1080.如何让它更快地运作?

代码:

public Bitmap curFrameImage(byte[] data, Camera camera)
{
    Camera.Parameters parameters = camera.getParameters();
    int imageFormat = parameters.getPreviewFormat();

    if (imageFormat == ImageFormat.NV21)
    {
        YuvImage img = new YuvImage(data, ImageFormat.NV21, prevSizeW, prevSizeH, null);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        img.compressToJpeg(new android.graphics.Rect(0, 0, img.getWidth(), img.getHeight()), 50, out);
        byte[] imageBytes = out.toByteArray();
        return BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
    }
    else
    {
        Log.i(TAG, "Preview image not NV21");
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

图像的最终格式必须是位图,因此我可以对其进行处理.我试图将Camera.Parameters.setPreviewFormat设置为RGB_565,但无法将相机参数分配给相机,我还读到NV21是唯一可用的格式.我不确定,是否有可能在这些格式变化中找到解决方案.

先感谢您.

java camera android bitmap yuv

3
推荐指数
2
解决办法
6096
查看次数

图像裁剪并在Android中调整大小

我按照下面的说明裁剪图像.

http://coderzheaven.com/index.php/2011/03/crop-an-image-in-android/

最终裁剪的位图图像的高度和宽度都大于屏幕的高度和宽度.

在调整大小和裁剪过程中,抛出内存不足错误,并强制应用程序退出.

错误日志:

04-09 11:37:28.658: ERROR/dalvikvm-heap(4003): 435176-byte external allocation too large for this process.
04-09 11:37:28.658: ERROR/GraphicsJNI(4003): VM won't let us allocate 435176 bytes    
04-09 11:37:28.668: WARN/dalvikvm(4003): threadid=1: thread exiting with uncaught exception (group=0x4001d800)    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): FATAL EXCEPTION: main    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): java.lang.OutOfMemoryError: bitmap size exceeds VM budget    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): at android.graphics.Bitmap.nativeCreate(Native Method)    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): at android.graphics.Bitmap.createBitmap(Bitmap.java:468)    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): at android.graphics.Bitmap.createBitmap(Bitmap.java:435)    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): at com.test.Test.onCreate(Test.java:57)    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)    
04-09 11:37:28.708: ERROR/AndroidRuntime(4003): …
Run Code Online (Sandbox Code Playgroud)

android image

2
推荐指数
2
解决办法
2万
查看次数