快速构建Windows 8风格应用29-捕获图片与视频

简介:

引言

本篇博文主要介绍 Windows 8 中相机的概念、捕获图片与视频的基本原理、如何实现捕获图片与视频、相机最佳实践。
一、相机
关于相机
1. 相机对话框提供了触屏优化的全屏体验,你可从嵌入的或附加的相机中捕获照片和视频。
2. 全屏对话框处理显示相机  UI  的工作。
3. 通过此对话框,你可以使用对  Windows.Media.Capture.CameraCaptureUI.captureFileAsyncAPI  的一种方法调用捕获照片或视频。
4. 作为捕获体验的一部分,用户可对其捕获的照片进行修剪,对捕获的视频进行剪辑,然后再将它们返回至调用应用程序。
5. 用户在捕获照片或视频前,还可调整一些相机设置,例如亮度、对比度和曝光等。相机对话框用于实时照片和视频捕获。
相机设置

1. 可通过相机选项调整相机设置
2. 包括照片分辨率;是否视频防抖动;亮度;对比度等选项
编辑照片

1.“ 裁剪 按钮进行裁剪照片
2.“ 确定 按钮确认捕获的照片
3.“ 重拍 按钮重新拍摄照片
编辑视频

1.“ 剪辑 按钮进行剪辑视频
2.“ 确定 按钮确认捕获的视频
3.“ 重拍 按钮重新拍摄视频
二、捕获图片与视频的基本原理

首先,我们需要在清单文件中注册摄像头 / 麦克风权限。
其次,在相应的 .cs 文件中,添加命名空间。
最后,声明 CameraCaptureUI 对象、设置对象属性、调用 CaptureFileAsync 方法。
然后我们就可以通过应用程序调用摄像头来捕获照片 / 视频了。
三、如何实现捕获图片与视频
启用摄像头权限
1. 捕获照片时,应用必须允许使用摄像头
2. 可通过设置应用程序清单文件( Package.appxmanifest )启用摄像头权限
3.Capabilities 选项卡中勾选 Webcam
启用麦克风权限

1. 捕获视频时,应用一般允许使用麦克风
2. 可通过设置应用程序清单文件( Package.appxmanifest )启用麦克风权限
3.Capabilities 选项卡中勾选 Microphone
捕获照片相关属性

 

捕获视频相关属性

如何捕获照片

 
 
  1. using Windows.Media.Capture;  
  2.  private  async  void  OnCapturePhoto(object  sender, TappedRoutedEventArgs e)  
  3.  {  
  4.     var camera = new CameraCaptureUI();  
  5.  
  6.  var file = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo);  
  7.   if (file != null)  
  8.     {  
  9.        photo = file;  
  10.    
  11.          DataTransferManager.ShowShareUI();  
  12.     }  
  13.  }  

通过CameraCaptureUIMode可以设置PhoneVideo;PhoneOrVideo

如何捕获视频

 
 
  1.  using Windows.Media.Capture;  
  2.  private async void OnCaptureVideo(object sender, TappedRoutedEventArgs e)  
  3. {  
  4.       var camera = new CameraCaptureUI();  
  5.  
  6.      camera.VideoSettings.Format = CameraCaptureUIVideoFormat.Wmv;  
  7.  
  8.    var file = await camera.CaptureFileAsync(CameraCaptureUIMode.Video);  
  9.     if (file != null)  
  10.       {  
  11.           video = file;  
  12.            DataTransferManager.ShowShareUI();  
  13.       }  
  14.  } 
 
四、相机最佳实践
相机UI的合理使用
例如:对于提供个人资料图片的应用,可通过启动相机对话框捕获照片,进行更新个人资料。
相机UI的不合理使用
1. 当用户使用相机扫描条形码时,条形码阅读器应用可以为用户提供实时反馈,以让用户知道该条形码是否可读。这种情况下,使用相机对话框可能不是正确的选择,因为其对捕获的视频流不提供任何直接控制。你应该转而使用 MediaCapture API
2. 如果你需要添加超出相机对话框所提供功能的  UI  自定义,你应该转而使用 MediaCapture
3. 如果你的应用程序为视频或照片编辑应用程序,或具备某些照片或视频编辑功能,则应在修剪和裁剪功能关闭的情况下,使用相机对话框。然后,你的应用程序中的修剪和裁剪功能将不会与相机对话框中提供的功能重复。
 
相关参考资料:






 本文转自 王祖康 51CTO博客,原文链接:http://blog.51cto.com/wzk89/1088182,如需转载请自行联系原作者

相关文章
|
3月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
363 1
|
15天前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
26 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
1月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
142 0
|
1月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
46 0
|
3月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
|
3月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
232 3
|
3月前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
|
3月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
72 0
|
3月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
68 0
|
3月前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
109 0
下一篇
无影云桌面