【问题标题】:Blazor Hyrid - Access Device Camera from InputFileBlazor Hybrid - 从输入文件访问设备摄像头
【发布时间】:2022-10-09 10:42:11
【问题描述】:

我正在尝试使用 Blazor Hybrid(在 MAUI 上)从相机(在我的情况下为 Android)捕获图像。我已经尝试了一段时间没有成功。 This StackOverflow 建议尝试以下方法:

<input type="file" accept="image/*" capture>

但是,这也是:

<InputFile OnChange="LoadPhoto" accept="image/*" capture />

在 Blazor Hybrid 中对我不起作用(它在 Blazor Server/WASM 中起作用)。两者都会导致文件选择器小部件在 Android 中打开,而不是相机小部件。有什么建议么?

【问题讨论】:

  • 我对 Blazor Hybrid 不熟悉。我只想提一下,如果它不能满足您的需求,请考虑在 Maui 类中编写该访问(而不是作为 Razor 组件的一部分)。我知道“Maui”代码和“Blazor”代码之间存在一些互操作性。你得研究一下。
  • @ToolmakerSteve 谢谢!我已经考虑过这一点,但我不确定如何使用像接口这样的抽象来做到这一点,因此组件不需要知道它在 MAUI 下使用
  • 为什么不直接使用 MediaPicker.CapturePhotoAsync? ;) 这就是 .NET MAUI Hybrid 的强大之处,您可以只使用平台设备而无需通过浏览器 API
  • 好吧,html标签的实现取决于实现它们的程序。如果它是 Chrome 浏览器,它应该适用于任何东西。如果它是某种跨平台应用程序,那么它可能不会在所有设备上都以相同的方式工作。

标签: c# android .net blazor maui


【解决方案1】:

我会使用对相机的本机访问。您可以通过注入 DI 的对象来通信 MAUI 和 Blazor 部分。这样,blazor 代码就不会知道它在 MAUI 应用程序中运行。 此对象应具有类似“TakePicture()”的方法,当您单击按钮时在 Blazor 中调用该方法并引发类似“OnTakePicture”的事件。 MAUI 部分应将事件处理程序附加到 OnTakePicture,以便它可以使用相机拍照。拍摄图片时,您以相反的方式将图片作为 byte[] 获取并显示。

【讨论】:

    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多