最近一直在审视以前做过的东西,关于android摄像头预览,预览界面上呈现矩形框,在前文(

废话不说了,稍候几天我会仿照上面360这个扫描二维码的界面做一个工程(结合PreviewCallback),公开出来。这次先谈用底层surfaceView+上层ImageView实现只拍摄矩形框中的图像。新建一个类继承ImageView,源码如下:
在主程序文件里,onCreate()函数里设置底层SurfaceView为底层且透明(如果不设也可以,默认就是如此):
mPreviewSV.setZOrderOnTop(false);
mySurfaceHolder.setFormat(PixelFormat.TRANSPARENT);//translucent半透明 transparent透明
在主UI线程里的onCreate()函数里添加代码:
//绘制矩形的ImageView
mDrawIV = (yan.guoqi.rectphoto.DrawImageView)findViewById(R.id.drawIV);
mDrawIV.onDraw(new Canvas());
看上面的DrawImageView的函数里的onDraw,画的矩形是Rect(100, 200, 400, 500)。在onPictureTaken(byte[] data, Camera camera)函数里,先将图片旋转90度,大小成为宽×高(960×1280)。由于预览surfaceview的大小是宽×高(540×800),所以在onPictureTaken函数里将960×1280的图片缩放到540×800, 缩放相同大小后就可以用矩阵的坐标直接截取子图了。核心函数就是这两句:
//将960×1280缩放到540×800
Bitmap sizeBitmap = Bitmap.createScaledBitmap(rotaBitmap, 540, 800, true);
Bitmap rectBitmap = Bitmap.createBitmap(sizeBitmap, 100, 200, 300, 300);//截取
注意这个截取的函数参数和矩阵的坐标关系,分别是x轴 y轴起始坐标及 x轴宽度 y轴宽度。截取出来的图片大小应该是300×300. onPictureTaken()函数的源码如下:
Android采用View、SurfaceView实现的蠕动动画效果
SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,
Android实现缩放、移动、内外盘旋转转盘控件
Android贴纸标签相机,功能:拍照,相片裁剪,给图片贴贴纸,打标签
SurfaceView做的一个小动画,触摸屏幕就会在圣诞书中间生成一张
Android只拍摄SurfaceView预览界面特定区域内容完整实现介绍及源
Android通过surfaceView实现的转盘抽奖功能
Android采用View、SurfaceView实现的蠕动动画效果
SurfaceView + MediaPlayer 实现的视频播放器,支持横竖屏切换,
Android实现缩放、移动、内外盘旋转转盘控件
Android贴纸标签相机,功能:拍照,相片裁剪,给图片贴贴纸,打标签
SurfaceView做的一个小动画,触摸屏幕就会在圣诞书中间生成一张
Android通过surfaceView实现的转盘抽奖功能
热门源码