flutter相机模糊,相机看起来模糊怎么办

flutter扫码插件,支持自定义

nan_scan 是一款支持iOS和android 的扫码器插件,支持用户自定义页面

10年的汉阳网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整汉阳建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“汉阳网站设计”,“汉阳网站推广”以来,每个客户项目都认真落实执行。

1、配置:

android配置:在AndroidManifest.xml 下添加相机权限 uses-permission android:name="android.permission.CAMERA" /

iOS:在打开xcode,在info.plist 下添加 Privacy - Camera Usage Description ,打开相机权限

2、使用:

引入插件:在pubspec.yaml 中,

dependencies:

   nan_scan: 版本号

使用案例方法:

或者:

demo效果图:

苹果在为“人工智能”不停收购, 谁能再做一个谷歌与Facebook在人工智能方面的收购清单?

在通往人工智能的路上,Google一直在不停地买买买。而且Google在人工智能领域的收购其实从2006年就开始了。

DeepMind(2014年1月26日被Google收购)

Deepmind可以说是当下最火的人工智能初创公司,于2014年1月26日被Google收购。

虽然被谷歌收购,但是DeepMind一直是独立运营的,他们的目标是开发能够“独立思考”的软件。为了能够开发这种类型的人工智能软件,DeepMind在海量数据集合的帮助下使用机器学习等技术训练自己的人工智能去完成某些工作任务。

api.ai(2016年9月19日被Google收购)

api.ai的API可以透过语音辨识、意图辨识和上下文语境理解等技术,让电脑理解人类语言并转换为行动,协助开发者打造类似Siri的对话式智慧助理,可用于聊天机器人、App、智慧家电等。

api.ai已经证明他们可以协助开发者设计、开发和不断改进会话式界面。超过6万名开发者正使用API.ai的工具开发会话式体验。api.ai提供了业界领先的会话式用户界面平台,能够协助谷歌指导开发者持续开发优秀的自然语言界面。

Moodstocks(2016年7月6日被Google收购)

Moodstocks公司成立于2008年,作为一个小的创业公司,他们的规模并不大。

Moodstocks公司是以图像识别技术为主,并推出了智能手机的图像识别应用程序Moodstocks Notes。在加入谷歌在巴黎的研发团队之后,他们将继续研发自己的视觉图像识别工具。

Dark Blue Labs(2014年10月23日被Google收购)

Dark Blue Labs是一家深度学习公司,主要从事数据架构以及算法开发工作,被收购后并入DeepMind。

Jetpac(2014年8月17日被Google收购)

总部位于旧金山的Jetpac通过Instagram等社交图片分享工具制作城市导游服务。通过分析食品、装饰和人物图片,Jetpac的软件便可对城市的各种特点进行分析。

Jetpac被收购前有三款智能手机应用,包括一款城市导游助手、一款图片分析器和一款图片探测工具,被收购后并入Picasa中。

Emu(2014年8月6日被Google收购)

Emu是一个类似语音助手Siri但却是“通过文本消息服务的内置助手”。

它整合了类似Siri个人助理的功能,将会根据你的聊天记录,自动执行移动助理的任务。比如自动建立日程、设置时间提醒、甚至还能帮你预定餐馆。

Emu被Google收购后主要用于Google Hangouts以及Google Now中。

Flutter(2013年10月2日被Google收购)

Flutter2010年底由Navneet Dalal和Mehul Nariyawala创办,利用计算机视觉技术结合手势监测识别技术,使得用户可以用简单的手势来操控电脑和移动设备。

Flutter被Google收购后主要应用在Android以及Google X项目中。

Wavii(2013年4月23日被Google收购)

Wavii是一家成立于2009年3月的自然语言处理技术公司,总部位于西雅图。

Wavii主要做的是扫描网络、寻找新闻、然后进行总结,并附上文章来源的全文链接。

Wavii被Google收购后主要应用在Google Knowledge Graph(Google知识图谱)中。

DNNresearch(2013年3月12日被Google收购)

DNNresearch公司是由深度学习大神Geoffrey Hinton与他的两个研究生Alex Krizhevsky和Ilya Sutskever成立。由于谷歌在本次收购中没有获得任何实际的产品或服务,所以本次收购实际上属于人才性收购,收购的主体是为了这三人团队。

Viewdle(2012年10月1日被Google收购) 

Viewdle是一家成立于2006年的乌克兰公司,被收购前主要做的是增强现实和面部识别。

Viewdle曾经推出的应用包括SocialCamera和Third Eye,Social Camera是其推出的首款应用,用户只需通过Faceprint教会你的相机识别好友,此后只要照片中出现了这些好友,SocialCamera就可以自动为他们打上标签。

Viewdle被Google收购后主要应用在Android中。

Clever Sense(2011年12月13日被Google收购)

Clever Sense是本地推荐应用Alfred的开发商。Alfred的独特之处在于它将人工智能和机器算法有机结合,为用户提供个性化的场所推荐,推荐的场所包括附近的餐馆、咖啡厅、酒吧和夜店。

Clever Sense被Google收购后主要应用在Android中。

PittPatt(2011年7月23日被Google收购)

PittPatt是一家由卡耐基梅隆大学孵化的专注于人脸识别和模式识别公司,其开发了一项能在照片、视频和其他媒介之中识别匹配人脸的技术,创造了一系列人脸检测、跟踪和识别的算法。

PittPatt的人脸检测和跟踪的软件开发工具包(SDK)能在照片中确定人脸的位置,在视频中跟踪人脸的移动情况。

PittPatt被Google收购后主要应用在Android中。

SayNow(2011年1月25日被Google收购)

SayNow是一家成立于2005年的语音识别公司,总部位于美国加州帕罗奥托(Palo Alto)市。

SayNow的平台可将语音通讯、一对一通话和集团通话整合到Facebook和Twitter等社交网站,以及Android和iPhone手机应用中。

SayNow被Google收购后主要应用在Google Voice中。

Phonetic Arts(2010年12月3日被Google收购) 

Phonetic Arts公司是一家位于英国的语音合成技术厂商。被Google收购前Phonetic Arts公司的语音合成技术主要用在游戏中,但谷歌希望将该技术用于其电脑声音自动输出系统,以使机器合成的人声更像人类的声音以及更加流利。

Phonetic Arts被Google收购后主要应用在Google Voice和Google Translate中。

Metaweb(2010年7月16日被Google收购)

Metaweb是一家从事语义搜索(Semantic Search)技术开发的风险企业,目标是开发用于Web的语义数据存储的基础结构。

Metaweb被Google收购后主要应用在Google Search中。

Neven Vision(2006年8月15日被Google收购)

这个可以说是Google最早在人工智能领域的收购了,可以追溯到2006年。

Neven Vision是一家图像识别技术公司,其能自动从图片里提取信息、并且辨认图片的内容,被收购前主要应用于手机以及美国政府和执法部门的计量生物学应用中。

Neven Vision被Google收购后主要应用在Picasa以及Google Goggles中。

k50发出来的视频会抖

相机像素低。

在桌面端研发工作台的开发中,我们使用的是FlutterDesktop技术至于原因,技术调研部分会讲,国内目前FlutterDesktop技术在生产环境落地的并不多,相关经验还比较缺乏,遇到一些问题的时候,需要自己去探索解决。

接下来我们就来看一看我们为了解决这些问题,在iBox上设计了哪些核心的功能,以及这些功能是如何解决这些问题的。

iphone11相机为什么只能放大5倍

iphone11相机为什么只能放大5倍?

程序鹅 

码龄5年

关注

在做扫码需求,往往会有放大镜头需求。

苹果提供了AVCaptureConnection中,videoScaleAndCropFactor:缩放裁剪系数,使用该属性,可以实现拉近拉远镜头。再结合手势UIPinchGestureRecognizer,就很简单实现手势拉近拉远镜头。

手势代码

///记录开始的缩放比例

@property(nonatomic,assign)CGFloat beginGestureScale;

///最后的缩放比例

@property(nonatomic,assign)CGFloat effectiveScale;

- (void)cameraInitOver

{

if (self.isVideoZoom) {

UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchDetected:)];

pinch.delegate = self;

[self.view addGestureRecognizer:pinch];

}

}

- (void)pinchDetected:(UIPinchGestureRecognizer*)recogniser

{

self.effectiveScale = self.beginGestureScale * recogniser.scale;

if (self.effectiveScale 1.0){

self.effectiveScale = 1.0;

}

[self.scanObj setVideoScale:self.effectiveScale];

}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

if ( [gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]] ) {

_beginGestureScale = _effectiveScale;

}

return YES;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

拉近拉远镜头代码

- (void)setVideoScale:(CGFloat)scale

{

[_input.device lockForConfiguration:nil];

AVCaptureConnection *videoConnection = [self connectionWithMediaType:AVMediaTypeVideo fromConnections:[[self stillImageOutput] connections]];

CGFloat maxScaleAndCropFactor = ([[self.stillImageOutput connectionWithMediaType:AVMediaTypeVideo] videoMaxScaleAndCropFactor])/16;

if (scale maxScaleAndCropFactor)

scale = maxScaleAndCropFactor;

CGFloat zoom = scale / videoConnection.videoScaleAndCropFactor;

videoConnection.videoScaleAndCropFactor = scale;

[_input.device unlockForConfiguration];

CGAffineTransform transform = _videoPreView.transform;

[CATransaction begin];

[CATransaction setAnimationDuration:.025];

_videoPreView.transform = CGAffineTransformScale(transform, zoom, zoom);

[CATransaction commit];

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

有一点需要注意:the videoScaleAndCropFactor property may be set to a value in the range of 1.0 to videoMaxScaleAndCropFactor,videoScaleAndCropFactor这个属性取值范围是1.0-videoMaxScaleAndCropFactor,如果你设置超出范围会崩溃哦!

iOS 模仿微信扫描二维码放大功能

我们知道,微信扫描二维码过程中,如果二维码图片焦距比较远,会拉近焦距,实现放大功能。这种效果如何该实现,用原生的API又是如何实现。本文简单尝试如何使用AVFoundation实现放大二维码图片。重点是如何定位二维码和放大二维码,前面介绍了 iOS 扫描二维码实现手势拉近拉远镜头 iOS 识别过程中描绘二维码边框 和iOS 识别过程中描绘二维码边框 ,我们可以很简单的实现二维码定位和放大。 ...

APP打开

Android代码-Flutter实现的二维码扫描。

flutter_mobile_vision Flutter implementation for Google Mobile Vision. Based on Google Mobile Vision

APP打开

扫描二维码研究总结(高仿微信扫一扫,轻松实现定制扫描界面)

在正文之前说点题外话,加上这篇我已经写了3篇博客了,其实我写博客的初衷不是想证明自己有多牛,并且我也只是从事安卓开发只有半年时间的小渣,但是不想成为大牛的渣不是好渣,所以我想通过博客把工作学习中遇到的问题进行研究总结,从而提高自己,与此同时如果能给广大从事安卓开发的朋友们提供帮助或者是提供一点点思路我也是很心满意足了!~~好了,废话不多少进入正题吧! 先上界面图。由于目前不会录屏,所以直接上截图...

APP打开

ios 扫描二维码实现自动放大和手势双击放

Flutter 上字体的另类玩法:FontFeature

在以前的 《Flutter 上默认的文本和字体知识点》 和 《带你深入理解 Flutter 中的字体“冷”知识》 中,已经介绍了很多 Flutter 上关于字体有趣的知识点,而本篇讲继续介绍 Flutter 上关于 Text 的一个属性: FontFeature , 事实上相较于 Flutter ,本篇内容可能和前端或者设计关系更密切 。

什么是 FontFeature ? 简单来说就是影响字体形状的一个属性 ,在前端的对应领域里应该是 font-feature-settings ,它有别于 FontFamily ,是用于指定字体内字的形状的一个参数。

我们知道 Flutter 默认在 Android 上使用的是 Roboto 字体,而在 iOS 上使用的是 SF 字体,但是其实 Roboto 字体也是分很多类型的,比如你去查阅手机的 system/fonts 目录,就会发现很多带有 Roboto 字样的字体库存在。

所以 Roboto 之类的字体库是一个很大的字体集,不同的 font-weight 其实对应着不同的 ttf ,例如默认情况下的 Roboto 是不支持 font-weight 为 600 的配置 :

所以如下图所示,如果我们设置了 w400 - w700 的 weight ,可以很明显看到中间的 500 和 600 其实是一样的粗细,所以在 设置 weight 或者设计 UI 时,就需要考虑不同平台上的 weight 是否支持想要的效果 。

回归到 FontFeature 上,那 Roboto 自己默认支持多少种 features 呢? 答案是 26 种,它们的编码如下所示,运行后效果也如下图所示,从日常使用上看,这 26 种 Feature 基本满足开发的大部分需求。

而 iOS 上的 SF pro 默认支持 39 种 Features , 它们的编码如下所示,运行后效果也如下图所示,可以看到 SF pro 支持的 Features 更多。

所以可以看到,并不是所有字体支持的 Features 都是一样的,比如 iOS 上支持 sups 上标显示和 subs 下标显示,但是 Android 上的 Roboto 并不支持,甚至很多第三方字体其实并不支持 Features 。

有趣的是,在 Flutter Web 有一个渲染文本时会变模糊的问题 #58159 ,这个问题目前官方还没有修复,但是你可以通过给 Text 设置任意 FontFeatures 来解决这个问题。

最后,如果对 FontFeature 还感兴趣的朋友,可以通过一下资料深入了解,如果你还有什么关于字体上的问题,欢迎留言讨论。

基于网友的问题再补充一下拓展知识,毕竟这方面内容也不多 。

事实上在 dart 里就可以看到对应 FontWeight 约定俗称用的是字体集里的什么字体:

所以如果对于默认字体有疑问,可以在你的手机字体找找是否有对应的字体, 比如虽然我们说 roboto 没有 600 ,但是如果是 roboto mono 字体集是有 600 的 fontweight ,甚至还有 600 斜体: 。

另外注意这是 Flutter 而不是原生,具体实现调用是在 Engine 的 paragraph_skia.cc 和 paragraph_builder_skia.cc 下对应的 setFontFamilies 相关逻辑,当然默认字体库指定在 typography.dart 下就看到,例如 'Roboto' 、 '.SF UI Display' 、 '.SF UI Text' 、 '.AppleSystemUIFont' 、 'Segoe UI' :

另外如果你在 Mac 的 Web 上使用 Flutter Web,可以看到指定的是 .AppleSystemUIFont ,而对于 .AppleSystemUIFont 它其实不算是一种字体,而是苹果上字体的一种集合别称:

[图片上传失败...(image-40f5ce-1648368234737)]

还有,如果你去看 Flutter 默认自带的 cupertino/context_menu_action.dart ,就可以看到一个有趣的情况:

当然,前面我们说了那么多,主要是针对英文的情况下,而在中文下还是有差异的 ,之前的文章也介绍过:

例如,在苹果上的简体中文其实会是 PingFang SC 字体,对应还有 PingFang TC 和 PingFang HK 的繁体集,而关于这个问题在 Flutter 上之前还出现过比较有意思的 bug :

当然后续的 #16709 修复了这个问题 ,而在以前的文章我也讲过,当时我遇到了 “Flutter 在 iOS 系统上,系统语言是韩文时,在和中文一起出现会导致字体显示异常" 的问题 :

解决方法也很简单,就是给 fontFamilyFallback 配置上 ["PingFang SC" , "Heiti SC"] 就可以了,这是因为韩文在苹果手机上使用的应该是 Apple SD Gothic Neo 这样的超集字体库,【广】这个字符在这个字体集上是不存在的,所以就变成了中文的【广】;

所以可以看到,字体相关是一个平时很少会深入接触的东西,但是一旦涉及多语言和绘制,就很容易碰到问题的领域 。


网站名称:flutter相机模糊,相机看起来模糊怎么办
文章地址:http://ybzwz.com/article/hohcdc.html