标签: Android 相机
最近做了一段时间的相机开发,有一些感悟,所以在这里整理分享出来。在这个过程中也出现了一些问题,比如预览的时候图像是被拉伸的,预览的时候旋转图片变形,把手机旋转90的时候预览图片是变形的等等,很多问题。其实最后的原因都是归因于分辨率。为什么会这么说,下面一点点分析。
自定义相机,从用户的操作的角度来看,有两个部分。一个是看手机屏幕的图像,一个是点击拍摄照片(有特殊功能的除外,说的都是一般的相机)。在这两部中,其实都是在跟图像打交道,手机屏幕上的图像其实就是一帧帧硬件相机扫描出来的结果,点击照相时就是把这一帧帧的图像挑选出来某一帧。
那说道图像,我想问个问题,“什么样的图像显示是正常的呢?“可能这个问题有些人不理解,也不知道怎么回答。我有一个答案,不知道说的对不对,但是我目前是这么认为的,如果要是有不同的意见,可以留言,大家一起讨论。我认为图像要是显示正常,应该是图像的大小跟分辨率匹配,图像的分辨率是表述像素点的多少的。那假设我有一个宽3,高4的图像,而在图像上的像素点却是,宽4个,高3个。那这种的话,像素点描述出来的图片肯定不是我们想要的,是被拍扁了的一张图片。所以自定义相机就应该是解决如何选择一个合适的分辨率设置给相机,而且应该是跟图像的宽高有关。
那下面就看看如果选择一个合适的分辨率。在android官方的demo例子里面是有相关的代码的。
private static Camera.Size getOptimalSize(@NonNull List sizes, int w, int h) {