Android利用SurfaceView显示Camera图像爬坑记(三)

前言

前一章《Android利用SurfaceView显示Camera图像爬坑记(二)》我们已经利用SurfaceTexture通过生成的Bitmap图片用canvas画出显示,最后最后留了个小尾巴,就是显示的图像并没有全屏,这一章就说一下怎么让其全屏。

全屏方式

这里就先直接说出结果,想要全屏显示就是两句,直接在canvas中画图的时候画了一个目标框形的大小即可。

 RectF rectF=new RectF(0, 0, canvas.getWidth(), canvas.getHeight());
 canvas.drawBitmap(cacheBitmap, null, rectF, null);

心路历程

直接想要实现上面结果的可以不用接着看这个,这里主要是我记录一下实现的过程,浪费了一个多小时吧。

最初觉得全屏显示的话,那我直接获取屏幕的宽度和高度,在生成图片的方法里面把图片的宽高重新定义一下就行了,然后我就先在定义了屏幕宽高的两个参数

接着在构造函数中加入获取屏幕宽高的方法

生成图片的nv21ToBitmap的方法参数中我们传入了canvas的宽和高

然后运行的结果直接就变下面这样了

从我们输出的日志看,PreviewSize的宽和高与canvas的宽和高前后不对,如下图

所以我就又宽高的输出倒过来试了一下,结果还是一样的,所以这个方法放弃。


后来在网上又找各种资料,大部分说的都是设置setPreviewSize的方法,如图

还有下面的

还有想到这个了

试了好几种,基本不是打开Camera后直接白屏了,就是这个缩放的比例也是奇怪,无全不是我想要的结果,一度无语中。

最后我就在想,即然我的图片已经生成好了,那是不是画的时候照的画布大小画就可以了,开始的思路应该是不对的,于是又各种查找,终于找到一个文章,如下

看完后我也是。。。。。一共两行的代码,折腾了一个小时,然后就用这个方法改为我们最上面的效果。

下面就是改完后的视频效果:

-END-

Vaccae的往期经典


OpenCV

《C++ OpenCV案例实战---卡号获取

《C++ OpenCV案例实战---卡片截取(附代码)

《C++ OpenCV透视变换---切换手机正面图片》

《C++ OpenCV实战---获取数量

《C++ OpenCV实战---利用颜色分割获取数量》


Android

《Android利用SurfaceView结合科大讯飞修改语音实别UI

《Android关于语音识别的功能实现分析(一)---结构化思维》

《Android关于语音识别的功能实现分析(二)---语义解析》

《Android根据类生成签名字符串

《Android碎片化布局fragment的实战应用

《Android中RecyclerView嵌套RecyclerView

《Android里用AsyncTask后的接口回调


.Net C#

《C#自定义特性(Attribute)讲解与实际应用

《C#根据类生成签名字符串(附DEMO下载地址)

《C++创建动态库C#调用》

《C#与三菱PLC(型号FX2N)串口通讯类


数据库及其它

《Oracel存储过程写报表实战》

《Delphi轮播视频和图片程序(用于双屏显示程序)

《SQL随机增加销售数据的脚本编写(附脚本下载地址)

SQL Server中With As的介绍与应用(三)--递归的实战应用

《Oracle通过ODBC连接SQL Server数据库


长按下方二维码关注微卡智享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值