- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用矩形直接从相机预览中裁剪图像。使用以下代码时,我的 LogCat 中出现以下错误:
skia(24596): onFlyCompress
AndroidRuntime(24596): FATAL EXCEPTION: main
AndroidRuntime(24596): java.lang.NullPointerException
AndroidRuntime(24596): at com.example.mycameraapp.CameraActivity.getBoundData(CameraActivity.java:417)
AndroidRuntime(24596): at com.example.mycameraapp.CameraActivity$2.onPreviewFrame(CameraActivity.java:320)
AndroidRuntime(24596): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:791)
AndroidRuntime(24596): at android.os.Handler.dispatchMessage(Handler.java:99)
AndroidRuntime(24596): at android.os.Looper.loop(Looper.java:137)
AndroidRuntime(24596): at android.app.ActivityThread.main(ActivityThread.java:5103)
AndroidRuntime(24596): at java.lang.reflect.Method.invokeNative(Native Method)
AndroidRuntime(24596): at java.lang.reflect.Method.invoke(Method.java:525)
AndroidRuntime(24596): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
AndroidRuntime(24596): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
AndroidRuntime(24596): at dalvik.system.NativeStart.main(Native Method)
我的代码在 getBoundData
方法中产生错误,大概是在我使用 YuvImage
和 compressToJpeg
方法时。方法的代码在这里:
ByteArrayOutputStream bos;
public byte[] getBoundData(final byte[] data,final Rect rect)
{
/*int h=mCamera.getParameters().getPictureSize().height;
int w=mCamera.getParameters().getPictureSize().width;
int bitsPerPixel=ImageFormat.getBitsPerPixel(mCamera.getParameters().getPictureFormat());
int bufferSize=w*h*(bitsPerPixel/8);
byte[] out=new byte[bufferSize];*/
new Thread()
{
public void run()
{
final int h=mCamera.getParameters().getPreviewSize().height;
final int w=mCamera.getParameters().getPreviewSize().width;
YuvImage yuvImage=new YuvImage(data,ImageFormat.NV21,w,h,null);
bos=new ByteArrayOutputStream();
yuvImage.compressToJpeg(rect, 100, bos);
}
}.start();
//Log.d(TAG,"Bound Array Size: "+bos.size());
return bos.toByteArray();
}
此方法在 PreviewCallback 中调用如下:
PreviewCallback mPreviewCallback=new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// TODO Auto-generated method stub
byte[] boxData=null;
Rect rect=mBox.getRect();
if(rect!=null)
boxData=getBoundData(data,rect);
else
boxData=data;
//file saving code...previously tested.
这是在 doSnap
方法中使用 mCamera.setPreviewCallback(mPreviewCallback);
调用的。
是什么导致了这个错误,我该如何纠正它?另外,这是直接从 Android 中的 CameraPreview 裁剪图像的最佳方式吗?
最佳答案
return bos.toByteArray();
你的bos
在这里是null
。它稍后仅在后台线程中初始化。
如果您需要从后台线程传回数据,请使用例如一个回调接口(interface)。 AsyncTask
使后台线程任务处理更加简单顺便说一句。
关于android - 使用 YuvImage 压缩时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326788/
Android 的相机预览数据以 NV21 (YUV 420) 返回,这是有据可查的。 2.2 添加了一个用于解码数据的 YuvImage 类。我遇到的问题是 YuvImage 类数据出现损坏或不正确
我想使用矩形直接从相机预览中裁剪图像。使用以下代码时,我的 LogCat 中出现以下错误: skia(24596): onFlyCompress AndroidRuntime(24596): FATA
本文整理了Java中android.graphics.YuvImage.compressToJpeg()方法的一些代码示例,展示了YuvImage.compressToJpeg()的具体用法。这些代码
本文整理了Java中android.graphics.YuvImage.getHeight()方法的一些代码示例,展示了YuvImage.getHeight()的具体用法。这些代码示例主要来源于Git
本文整理了Java中android.graphics.YuvImage.()方法的一些代码示例,展示了YuvImage.()的具体用法。这些代码示例主要来源于Github/Stackoverflow/
本文整理了Java中android.graphics.YuvImage.getYuvFormat()方法的一些代码示例,展示了YuvImage.getYuvFormat()的具体用法。这些代码示例主要
本文整理了Java中android.graphics.YuvImage.getWidth()方法的一些代码示例,展示了YuvImage.getWidth()的具体用法。这些代码示例主要来源于Githu
我需要创建一个 NV21 格式的 yuv 图像用于测试目的。 从这篇文章中,Displaying YUV Image in Android ,我看到了: YuvImage yuvImage = new
我重新发布这个问题是因为我不确定我之前问的是否正确。:) 我正在开发一个包含人脸检测的应用程序。相机启动正常。在预览帧回调中,我实例化了一个 faceview 对象(此类处理检测)。此类只能检测位图中
我正在构建一个缓冲 N 相机帧的应用程序,当用户点击一个按钮时,它会使用应用效果的所有已保存帧来保存照片。 我在 AsyncTask 上保存照片并处理帧。当我执行它时,我从屏幕上删除了所有内容,只留下
我正在为我的 xamarin 应用程序在 android 界面中将图像的字节数组转换为 YuvImage public KeyValuePair CaptureImageFromBarco
我是一名优秀的程序员,十分优秀!