嗨玩手游网

部分苹果 iPhone 用户反映升级 iOS 16 后 Face ID 出现问题

IT之家 11 月 6 日消息,部分数量的 iPhone 用户近期报告说,在更新到 iOS 16 后,Face ID 无法立即工作,出现了问题。目前还不清楚有多少人受到 Face ID 错误的影响,也不清楚是否只有特定型号的 iPhone 受到影响。

在相关贴子中,越来越多的用户报告说,更新到 iOS 16 后,iPhone 的 Face ID 停止工作。发帖人分享了一条错误信息,称“Face ID 不可用,请稍后尝试设置 Face ID”。

该帖子是在 iPhone X 分论坛上发布的,尽管也有用户称在他们的 iPhone 13 Pro Max 上遇到了 Face ID 的问题。还有人说,他们把 iPhone 带到了苹果零售店,商店技术人员称这是硬件错误。

10 月 27 日,一位客户在苹果社区论坛上写道,在更新到 iOS 16.1 后,发现 Face ID 不再工作。重启和重设 Face ID 似乎没有奏效。

今年 10 月初,有报道称 iOS 15.7.1 RC 候选版(不是正式版本)破坏了一部分用户的 Face ID。

IT之家获悉,如果 Face ID 在 iPhone 或 iPad Pro 上不工作,苹果提供了相关支持页面,介绍了采取的步骤,包括检查更新或 Face ID 设置,并确保没有东西遮挡住前置摄像头。

然而,这是一般的支持页面,并不能直接解决上述的特定 Face ID 错误。苹果公司没有发布关于该问题的任何支持文件,也没有回应和评论。

“变脸”FaceApp网上火爆,被质疑私自获取用户图片

IT之家7月18日消息 近是否在网上见到一些“变脸”的照片,大多数都是将人变老或变年轻的照片,如下图这些照片:

实际上,这些照片都是由一个名为FaceApp的应用处理的结果,近日这款应用可谓火遍国内外社交网络。不过,据澎湃新闻报道,一些程序开发人员对其隐私条款提出担忧,质疑该软件私自上传用户其他照片,并滥用照片数据。

▲经过FaceApp处理的马云照片:老年版vs小鲜肉版

FaceApp是一款图片编辑软件,可以通过人工智能(AI)识别,一键将照片中的人脸变老、变年轻、变成笑脸,或者让其露齿微笑等。其基本原理是通过算法获取照片中人物脸部的图像,并根据数据库中的其他图像进行表情调整。

最近,软件开发人员约书亚·诺齐(Joshua Nozzi)在推特上称,FaceApp未经许可就从人们的智能手机上上传了大量照片。不过,一位化名埃利奥特·奥尔德森(Elliot Alderson)的法国网络安全研究员表示未发现诺齐所说的批量上传现象。

还有人推测,FaceApp可能会从用户照片中收集数据,用来演练人脸识别算法。对此,该公司的首席执行官雅罗斯拉夫·贡恰罗夫(Yaroslav Goncharov)向BBC表示:“我们没有使用照片进行面部识别演练,只用于编辑图片。”

还有些人质疑为什么FaceApp需要上传照片,此类软件只需要在本地处理照片即可,对此,贡恰罗夫称:“我们可能会把上传的照片存储在云端,主要是出于执行速度和通信量的考虑。大多数图片会在上传后的48小时内从我们的服务器上删除。”

BIMFACE二次开发系列53 WinForm使用CefSharp加载模型1 简单应用

  在我的博客《C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案》中介绍了多种集成BIMFACE到客户端程序中的方案。最后推荐大家使用 CefSharp组件与WebView2组件。本篇文章介绍使用CefSharp组件如何集成BIMFACE到客户端程序中。

一、CefSharp 简介

CefSharp是一个围绕Chromium Embedded Framework(CEF)的轻量级.NET包装器。它是用C++/CLI编写的。允许开发者在.NET应用程序中嵌入Chromium。可以在C#或VB或任何其他CLR语言中使用。CefSharp同时提供WPF和WinForms Web浏览器控件实现。

功能特点

免费、开源:https://github/cefsharp/CefSharp

完善的文档

支持JS、C#、WinForm窗体之间相互通讯与调用兼容性较好,支持H5、CSS5、WebGL等支持获取Cookies较全面其他

二、CefSharp 下载

步骤1 新建WinForm项目

新建一个WinForm窗体应用程序,目标框架选择 .NET Framework 4.5.2,因为新版本的CefSahrp组件最低支持 .NET Framework 4.5.2。

步骤2 通过 NeGet 下载

打开NeGet

(1)搜索 CefSharp

(2)选择 CefSharp.WinForms

(3)选择最新版本

(4)点击【安装】按钮

点击【确定】开始安装。

安装完成后,项目中自动添加了CefSharp.dll、CefSharp.Core.dll、CefSharp.WinForms.dll 类库引用。

工具箱中也增加了CefSharp控件

步骤3 编译项目

编译 BIMFace.SDK.CSharp.Sample.WinForm 项目,生成如下内容

与 CefSharp 相关的共计32个文件,2个目录,文件大小总计216M。这个尺寸相对于业务系统本身来说已经非常大了,最后制作的安装包尺寸也会很大。

其中 locales 目录下是语言包,删除 zh-CN.pak 之外的所有文件,总文件大小可以减少22M左右。

三、CefSharp 集成开发

测试功能设计如下

功能说明

(1)WinForm中加载的网页来自于 BIMFace.SDK\BIMFace.SDK.CSharp.Sample\Pages\BIMFaceDemo7_3.html,所以Web项目要首先运行。

(2)WinForm 窗体中输入 BIMFACE FileId,点击【加载模型/图纸】按钮,调用CefSahrp组件,加载步骤(1)中的网页。代码如下:

// 加载模型/图纸private void btnLaodBIMFaceFile_Click(object sender, EventArgs e){ string fileId = txtBIMFaceFileId.Text.Trim(); if (string.IsNullOrEmpty(fileId)) { MessageBox.Show("请填写 BIMFACE FileId。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // 将 ChromiumWebBrowserBindObject 实例对象注入到 js 对象中。网页中即可调用 ChromiumWebBrowserBindObject 类中定义的属性、方法 var objToBind = new ChromiumWebBrowserBindObject(); chromiumWebBrowser1.JavascriptObjectRepository.Register("_chromeBrowser", objToBind, true, BindingOptions.DefaultBinder); string url = "https://localhost:44389/Pages/BIMFaceDemo7_3.html?fileId=" + fileId; chromiumWebBrowser1.Load(url);}

(3)网页中点击【JS 调用 C# 方法】按钮。代码如下:

在入口函数中,获取注入的 ChromiumWebBrowser 对象,名称为 _chromeBrowser。

按钮对应的js方法

// js 调用 C# 方法function callCharpMethod() { // 特别提醒:C# 类中定义的方法名称采用 Pascal 命名。网页中调用的时候必须将方法名称的第一个字母改为小写。否则调用不成功。 _chromeBrowser.testCalcAdd(6,8) .then(function (response) { alert(response); });}

特别提醒:C# 类中定义的方法名称采用 Pascal 命名。网页中调用的时候必须将方法名称的第一个字母改为小写。否则调用不成功。

调用的C#方法。定义一个单独的类,用于在CefSahrp组件加载网页之前,将其注入到网页中

(4)WinForm窗体中点击【 C# 调用 JS 方法】按钮。代码如下:

// C# 调用 JS 方法private void btnCsharpCallJsMethod_Click(object sender, EventArgs e){ Task<JavascriptResponse> jsResponse = chromiumWebBrowser1.EvaluateScriptAsync("jsMethodForCSharpTestCalcSub", 25, 7); if (jsResponse.Result != null && jsResponse.Result.Success == false) { MessageBox.Show("C#调用JS方法发生异常。" + jsResponse.Result.Message , "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }}

网页中定义的 jsMethodForCSharpTestCalcSub() 方法如下:

// js 方法,供C#调用 function jsMethodForCSharpTestCalcSub(num1, num2) { /*如果参数需要是复杂类型,则传递Json格式的字符串,然后反序列化为对象即可使用*/ alert('传入的参数num1:' + num1 + ", num2:" + num2 + ' 减法运算 num1 - num2 = ' + (num1 - num2)); }

特别说明:

(1)C#定义的方法供JS调用,C#方法的返回值类型、参数类型都只能是简单数据类型,如:int、string、bool 等。

(2)JS定义的方法供C#调用,JS方法的返回值类型、参数类型都只能是简单数据类型,如:int、string、bool 等。

一般来说复杂类型就是一个实体类。如果确实想使用复杂类型,建议的解决方案如下:

将复杂类型序列化为字符串,调用方将其反序列化之后再使用。

关于C#与JS互相通讯,请参考CefSahrp官方文档:/d/file/gt/2023-09/v14qmxkqg5z 组件运行分析

1、进程分析

(1)启动应用程序,CefSharp组件未加载Web网页时,默认启动了2个 CefSharp.BrowserSubProcess 子进程。原因是我当前使用的CefSharp是94.4.50版本,每当new CefSharp.WinForms.ChromiumWebBrowser() 一个时,会启动2个子进程。

(2)CefSharp组件加载Web网页后,又启动了2个 CefSharp.BrowserSubProcess 子进程,共计4个子进程。原因是 当 chromiumWebBrowser1.Load(url) 时启动2个子进程。不同版本的 CefSharp 组件,启动的子进程数量不同。

2、运行日志分析

CefSahrp组件加载网页浏览BIMFace模型/图纸之后,程序目录多了 GPUCache 目录、debug.txt 文件。

GPUCache目录内容如下。BIMFACE加载模型/图纸时利用了本地电脑的GPU强大的计算功能,所以产生了缓存内容。

debug.txt 内如如下,里面记录了网页的执行过程

五、总结

通过NeGet安装SDK时,运行时环境会被自动下载到当前项目的bin\debug 或者 bin\Release目录下。导致整个项目非常大,大约220M左右。以独立进程方式运行,消耗内存较多。

  如下是我的一个WinForm程序中使用CefSharp组件的运行状态,其中一个子进程消耗内存达到1.5G,太可怕了

当控件Dock属性设置为 Fill,客户端电脑的缩放与布局不是100%时,窗体呈现黑边(严重bug),并没有完全填充父容器。

《BIMFace.SDK.CSharp》开源SDK。欢迎大家下载使用:https://gitee/NAlps/BIMFace.SDK

欢迎评论区留言互相交流、点赞、转发,每天获取优质IT内容。

#31省增本土35例 涉北京河北等省市#

#曼联主场0-5惨败利物浦 萨拉赫戴帽#

#南京航空航天大学实验室爆燃2死9伤#

#北京2人翻墙离开封控小区前往外地#

#河北门店劫持事件致2死 嫌疑人自杀#