我已经在imageview上显示相机预览。我想知道在一个位置imageview像素的价值,但我的应用程序无法安装,并已停止在Android手机。我的代码:Android:从相机中获取像素在图像视图上显示
public class MainActivity extends Activity {
private CameraPreview camPreview;
private ImageView MyCameraPreview = null;
private FrameLayout mainLayout;
private TextView colorRGB;
private static int PreviewSizeWidth = 640;
private int PreviewSizeHeight = 480;
//private Bitmap bitmap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyCameraPreview = new ImageView(this);
SurfaceView camView = new SurfaceView(this);
SurfaceHolder camHolder = camView.getHolder();
camPreview = new CameraPreview(PreviewSizeWidth, PreviewSizeHeight, MyCameraPreview);
camHolder.addCallback(camPreview);
mainLayout = (FrameLayout) findViewById(R.id.framelayout1);
mainLayout.addView(camView, new LayoutParams(PreviewSizeWidth, PreviewSizeHeight));
mainLayout.addView(MyCameraPreview,new LayoutParams(PreviewSizeWidth, PreviewSizeHeight));
colorRGB=(TextView)findViewById(R.id.textView1);
float Ex=48;
float Ey=28;
float[] eventXY = new float[]{Ex,Ey};
Matrix invertMatrix = new Matrix();
MyCameraPreview.getImageMatrix().invert(invertMatrix);
invertMatrix.mapPoints(eventXY);
int x=Integer.valueOf((int)eventXY[0]);
int y=Integer.valueOf((int)eventXY[1]);
Drawable imgDrawable = MyCameraPreview.getDrawable();
Bitmap bitmap = ((BitmapDrawable) imgDrawable).getBitmap();
int getRGB = bitmap.getPixel(x, y);
colorRGB.setText(Integer.toHexString(getRGB));
}
错误日志报告:
06-05 19:07:59.610:E/AndroidRuntime(6665):显示java.lang.NullPointerException 06-05 19:产生的原因: 07:59.610:E/AndroidRuntime(6665):at com.proyek.androsign2.MainActivity.onCreate(MainActivity.java:73) 06-05 19:07:59.610:E/AndroidRuntime(6665):at android.app。 Activity.performCreate(Activity.java:4465) 06-05 19:07:59.610:E/AndroidRuntime(6665):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 06-05 19:07: 59.610:E/An droidRuntime(6665):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
感谢
主要问题是在getBitmap()中。 – DroidImage
这是因为您没有在ImageView MyCameraPreview上设置任何图像。您是否试图从相机预览或资源/资产中检索位图?如果您需要将相机预览作为位图,那么您需要查看http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html,然后将byte []数据转换为位图格式。 –
我试图从相机预览中检索位图。我已经在CameraPreview类中声明了public void onPreviewFrame(byte [] data,Camera camera)。我应该再次在MainActivity类中声明onPreviewFrame(byte [] data,Camera camera)吗? – DroidImage