快速构建Windows 8风格应用29-捕获图片与视频
原文:快速构建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: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
通过CameraCaptureUIMode可以设置Phone;Video;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: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
四、相机最佳实践
相机UI的合理使用
例如:对于提供个人资料图片的应用,可通过启动相机对话框捕获照片,进行更新个人资料。
相机UI的不合理使用
1.当用户使用相机扫描条形码时,条形码阅读器应用可以为用户提供实时反馈,以让用户知道该条形码是否可读。这种情况下,使用相机对话框可能不是正确的选择,因为其对捕获的视频流不提供任何直接控制。你应该转而使用 MediaCapture API。
2.如果你需要添加超出相机对话框所提供功能的 UI 自定义,你应该转而使用 MediaCapture。
3.如果你的应用程序为视频或照片编辑应用程序,或具备某些照片或视频编辑功能,则应在修剪和裁剪功能关闭的情况下,使用相机对话框。然后,你的应用程序中的修剪和裁剪功能将不会与相机对话框中提供的功能重复。
相关参考资料:
1.媒体捕获示例;
2.摄像头捕捉 UI 示例;
3.摄像头选项 UI 示例;
4.捕获或呈现音频、视频和图像(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用) (Windows);
快速构建Windows 8风格应用29-捕获图片与视频的更多相关文章
- 快速构建Windows 8风格应用32-构建辅助磁贴
原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕 ...
- 快速构建Windows 8风格应用17-布局控件
原文:快速构建Windows 8风格应用17-布局控件 本篇博文主要介绍三种常用的布局控件:Canvas.Grid.StackPanel. Panel类是开发Windows 8 Store应用中一个重 ...
- 快速构建Windows 8风格应用15-ShareContract构建
原文:快速构建Windows 8风格应用15-ShareContract构建 本篇博文主要介绍共享数据包.如何构建共享源.如何构建共享目标.DataTransferManager类. 共享数据包 Da ...
- 快速构建Windows 8风格应用14-ShareContract概述及原理
原文:快速构建Windows 8风格应用14-ShareContract概述及原理 本篇博文主要介绍Share Contract概述.Share Contract实现原理.实现Share Contra ...
- 快速构建Windows 8风格应用13-SearchContract构建
原文:快速构建Windows 8风格应用13-SearchContract构建 本篇博文主要介绍如何在应用中构建SearchContract,相应的原理已经在博文<快速构建Windows 8风格 ...
- 快速构建Windows 8风格应用9-竖直视图
原文:快速构建Windows 8风格应用9-竖直视图 本篇博文主要介绍竖直视图概览.关于竖直视图设计.如何构建竖直视图 竖直视图概览 Windows 8为了支持旋转的设备提供了竖屏视图,我们开发的应用 ...
- 快速构建Windows 8风格应用10-设备方向
原文:快速构建Windows 8风格应用10-设备方向 本篇博文主要介绍常用支持Windows 8操作系统设备的方向.如何获取当前设备方向.DisplayProperties类. 常用支持Window ...
- 快速构建Windows 8风格应用11-语义缩放
原文:快速构建Windows 8风格应用11-语义缩放 本篇博文主要介绍为什么需要语义缩放.什么是语义缩放.如何构建语义缩放. 为什么需要语义缩放 如果用过Windows 8系统的开发者都知道在Win ...
- 快速构建Windows 8风格应用12-SearchContract概述及原理
原文:快速构建Windows 8风格应用12-SearchContract概述及原理 本篇博文主要介绍Search Contract概述.Search Contract面板结构剖析.Search Co ...
随机推荐
- MEF初体验之八:过滤目录
当在使用子容器的时候,基于某些具体标准来过滤目录可能是重要的.例如,基于部件的创建策略来过滤是很常见的.下面的代码片段演示了如何构建这种特别方法: var catalog = new Assembly ...
- android:GLSurfaceView绘制bitmap图片及glViewport调整的效果
首先看一下GLSurfaceView是怎样绘制的.正如android开发文档中描写叙述的那样,我们须要new一个GLSurfaceView对象,然后设置一个实现了Renderer接口的对象,我们须要写 ...
- andriod 在windows配置环境
andriod开发环境配置 个人信息:就读于燕大本科软件project专业 眼下大四; 本人博客:google搜索"cqs_2012"就可以; 个人爱好:酷爱数据结构和算法,希望将 ...
- 读改善c#代码157个建议:建议1~3
目录: 建议一:正确操作字符串 建议二:使用默认转型方法 建议三:区别对待强制转型和as 建议一.正确操作字符串 1.确保尽量少的装箱 static void Main(string[] args) ...
- 创意HTML5文字特效 类似翻页的效果
原文:创意HTML5文字特效 类似翻页的效果 之前在网上看到一款比较有新意的HTML5文字特效,文字效果是当鼠标滑过是出现翻开折叠的效果,类似书本翻页.于是我兴致勃勃的点开源码看了一下,发现其实实现也 ...
- 【翻译】在Ext JS 5应用程序中怎样使用路由
原文:How to Use Routing in Your Ext JS 5 Apps 简单介绍 Ext JS 5是一个重要的公布版本号,它提供了很多新特性来创建丰富的.企业级的Web应用程序.MVV ...
- 我的2011年总结--大明zeroson程序猿一周年总结
花絮:看到csdn举办"我的2011"年度征文活动,我恰好工作也一年多了,上个月写了篇博客,主要是我换工作方面的流水账,这篇我从主观.客观.多方位地谈谈我这一年的变化. ...
- Oracle 数据导出到PowerDesigner
原文:Oracle 数据导出到PowerDesigner [一]配置ODBC win7 :控制面板(查看方式:小图标)→管理工具→数据源(ODBC) 在[ODBC数据源管理器]面板下,在默认[用户DN ...
- Notepad++ 经常使用快捷键 (MEMO)
最近的一项研究Lua,使用Notepad++ 作为编译器. 今天早上无意中按下 Ctrl+D ,.突然认为Notepad++ 这东西非常奇妙. 网上查找了Notepad++的快捷键,尝试 Ctrl+Q ...
- .NET系统开发过程中积累的扩展方法
分享.NET系统开发过程中积累的扩展方法 .NET 3.5提供的扩展方法特性,可以在不修改原类型代码的情况下扩展它的功能.下面分享的这些扩展方法大部分来自于Code Project或是Stacko ...