快速构建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)

时间: 2024-09-28 12:00:07

快速构建Windows 8风格应用29-捕获图片与视频的相关文章

快速构建Windows 8风格应用32-构建辅助磁贴

原文:快速构建Windows 8风格应用32-构建辅助磁贴 引言 Windows Phone中,我们开发者可能会开发的一个功能点是将数据列表中某一项"Pin To Start(固定到开始屏幕)",大家都知道这种固定到开始屏幕的磁贴叫做辅助磁贴(也叫二级磁贴),用户可以通过该辅助磁贴启动应用程序并导航到应用程序中某一个页面或某一位置. 其实Windows 8 Store风格应用程序也引入了辅助磁贴的概念,用户在使用Windows 8 Store应用的辅助磁贴和Windows Phone

快速构建Windows 8风格应用35-触控输入

原文:快速构建Windows 8风格应用35-触控输入 引用 Windows 8设备通常具有多点触摸屏,用户可以同时使用多个手指来进行不同的输入交互,如点击.拖动或收缩等手势操作.另外Windows 8中将触摸.鼠标和笔/触笔交互是作为指针输入进行接收.处理和管理. 一.手势处理 首先我们来汇总一下Windows 8中常用的手势都有哪些. 1,点击:用一个手指触摸屏幕,然后抬起手指. 2,长按:用一个手指触摸屏幕并保持不动. 3,滑动:用一个或多个手指触摸屏幕并向着同一方向移动. 4,轻扫:用一

快速构建Windows 8风格应用22-MessageDialog

原文:快速构建Windows 8风格应用22-MessageDialog 本篇博文主要介绍MessageDialog概述.MessageDialog常用属性和方法.如何构建MessageDialog   MessageDialog概述 MessageDialog指的就是对话框. 对话框的命令栏中最多包含三个命令.如果我们指定任何命令,将会有一个默认命令添加到对话框中,目的是关闭对话框. 对话框弹出后界面中所有元素将在对话框下面显示,并且将会阻塞任何触摸事件直到用户进行响应对话框. 另外对话框应该

快速构建Windows 8风格应用36-商店应用发布流程

原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/StorePortals/ 该网址进行注册开发者账号,同时我们也可以点击这里来浏览MSDN给到的开发者账号注册的详细步骤.那么注册完成开发者账号后,如何发布Windows Store 应用程序呢? Windows Store App 发布流程 1,使用Visual Studio 2012打开要上传的应用,

快速构建Windows 8风格应用23-App Bar概述及使用规范

原文:快速构建Windows 8风格应用23-App Bar概述及使用规范 本篇博文主要介绍App Bar概述.App Bar命令组织步骤.App Bar最佳实践.   App Bar概述 Windows 8 Store应用中的App Bar(应用程序工具栏)起到的作用和Windows Phone中AppBar一样.我们可以向用户提供各种操作接口,实现导航或者触发命令等. AppBar一般默认是隐藏的,也可以设置为始终可见.我们可以通过清扫屏幕上边缘或下边缘时显示AppBar,AppBar被点击

快速构建Windows 8风格应用26-本地应用数据

原文:快速构建Windows 8风格应用26-本地应用数据 本篇博文主要介绍如何获取应用的设置和文件容器.如何将数据写入设置.如何从设置中获取数据.如何删除设置中数据.如何将数据写入文件.如何从文件中获取数据. 当应用安装时,系统会为设置和文件等应用数据提供它自己的每用户数据存储.我们不需要知道这些数据存在哪里或如何存储,因为系统会负责管理物理存储工作.我们只需使用应用数据API就可以了. 本地应用数据一般用于当前设备数据的持久化,并且本地数据没有限制大小,通常情况使用本地数据存储大型数据集.

快速构建Windows 8风格应用2-创建调试应用

原文:快速构建Windows 8风格应用2-创建调试应用 本篇博文主要介绍的是创建应用时可以选择哪些模版,生成默认的Windows 8风格应用解决方案中含哪些文件,最后是如何调试Windows 8风格应用. 我们如何使用Visual Studio 2012创建Windows 8风格应用呢?可归结为以下几步: 1.选择我们要使用的开发语言,例如:JavaScript.C++.C#.Visual Basic. 2.选择项目模版,可以选择以下常用的项目模版: 1)拆分应用(Split App)模版 可

快速构建Windows 8风格应用30-应用生命周期管理

原文:快速构建Windows 8风格应用30-应用生命周期管理 引言 Windows 8 中可以启动多个应用并在其中切换,我们没有必要担心降低系统速度或消耗电池电量. 因为系统会自动挂起(有时会终止)在后台正在运行的应用.设计良好的应用可以由系统挂起.终止以及重新启动,并且这些过程看起来该应用一直在运行中. 一.原理 1.当激活了应用时,无论任何原因,系统都会发送 Activated 事件 2.每当用户切换到桌面或其他应用时,系统都会挂起你的应用,系统会发送Suspending事件 3.每当用户

快速构建Windows 8风格应用20-MediaElement

原文:快速构建Windows 8风格应用20-MediaElement 本篇博文主要介绍MediaElement概述.MediaElement对象介绍.MediaElement常用属性.如何控制媒体播放. MediaElement概述 通常在Windows 8风格应用中播放音频或视频文件时是使用MediaElement类进行构建的. MediaElement对象提供了用于播放视频或音频的属性和方法. 相关MediaElement的开发示例可参考该链接:XAML media playback sa