65.9K
CodeProject 正在变化。 阅读更多。
Home

在业务解决方案中使用移动设备摄像头

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (10投票s)

2008年7月3日

CPOL

5分钟阅读

viewsIcon

82618

本文介绍了如何在针对 .NET Compact Framework 的业务应用程序中使用移动设备内置的摄像头和麦克风。

引言

如今,所有 Windows Mobile 设备都配备了内置摄像头。随着其分辨率的不断提高以及所拍摄照片的整体质量的提升,其用途已不再局限于拍摄家庭照片。任何需要进行照片文档记录的行业或机构(例如保险代理人、广告牌维护人员、犯罪现场调查员、摄影记者等)都可以发现此类 Windows Mobile 设备很有用。

在本文中,我将演示如何使用 Microsoft Visual Studio(2005 或 2008 均可)创建一个智能设备应用程序,该应用程序使用摄像头和内置麦克风。该应用程序将提供以下功能:

  • 启动内置摄像头并拍照。
  • 显示拍摄的照片,并允许用户对其进行调整(通过旋转、裁剪、调整亮度、对比度、伽马校正值)。
  • 为照片录制语音备忘录。
  • 将照片与语音备忘录一起保存到移动 SQL CE 数据库中。
  • 查看数据库中存储的照片并回放录制的备忘录。

这是应用程序主屏幕的外观。

Main screen of the application

必备组件

您将需要:

  • Microsoft Windows Mobile 5.0 SDK(或更高版本),您可以 在此处 下载。
  • 一台带有内置摄像头的 Windows Mobile 5.0 设备,用于测试该应用程序。
  • Resco MobileForms Toolkit Volume 2,您可以 在此处 下载。

Resco MobileForms Toolkit 是一套专为移动设备设计的 Visual Studio 控件。在将 Resco MobileForms Toolkit Volume 2 安装到您的计算机后,这些控件将自动添加到 Visual Studio 的工具箱中。我们将在项目中 se 使用这些 Resco 控件和库。

  • Resco Audio 库 for .NET CF
  • Resco ImageBox for .NET CF
  • Resco ImageButton for .NET CF

该应用程序可以为 .NET Compact Framework 2.0 和 .NET Compact Framework 3.5 创建。只需下载相应版本的 Resco MobileForms Toolkit 2008 即可。

准备项目

首先,在 Visual Studio 中创建一个新的智能设备项目。为了使 Resco Audio 库和 Resco ImageBox 控件正常工作,必须将包含本机代码的两个 *.dll 文件复制到移动设备上。将这两个文件作为内容添加到您的项目中。

  • Resco.Audio.Native.dll
  • Resco.ImageBox.Native.dll

您还必须将其 CopyToOutputDirectory 属性设置为 CopyAlwaysCopyIfNewer。另外,请将一个名为 data.sdf 的数据库文件添加到项目中。

数据库

该应用程序将使用移动 SQL CE 服务器,这是 .NET Compact Framework 的一部分。Visual Studio 应该能够在部署应用程序时自动将 .NET Compact Framework 和 SQL CE 服务器安装到您的移动设备上。数据库模型非常简单。该数据库仅包含一个表,其架构如图 1 所示。

Database model

图 1:数据库模型

Thumb 列将包含图像的缩略图,该缩略图将通过减小尺寸从原始图像创建。这将用于让用户预览图像。

用户界面

该应用程序由三个 Form 对象组成。

  • MainForm 允许用户使用摄像头拍照并进行调整。
  • RecordForm 允许用户录制语音备忘录。
  • ViewImages 允许用户查看数据库中的图像并回放录制的备忘录。

MainForm

Visual Studio 设计器中的 MainForm 显示在图 2 中。它包含 ImageBox 控件,用于显示拍摄的照片。右上角的 ImageButton 用于旋转图像和启动内置摄像头。在窗体的下部,有 4 个滑块条,可用于放大和缩小、调整亮度、对比度和伽马校正值。Crop 模式复选框将 ImageBox 控件设置为 Crop 模式,如图 3 所示。

Design of the MainForm Demonstration of cropping
图 2:MainForm 设计器 图 3:Crop 模式

用户可以调整裁剪矩形的大小和位置,然后执行裁剪。窗体上有两个菜单项。

  • Save 将图片(包括执行的调整)与语音备忘录一起保存到数据库中。
  • View 查看数据库中的图像。

RecordForm

您可以在图 4 中看到此窗体的设计。该窗体非常简单。它包含一个 ImageButton,用于开始和暂停录制。录制时长(以毫秒为单位)显示在 TextBox 中。TextBox 的值每 500 毫秒使用一个 Windows Timer 对象刷新。一旦用户完成录制,他可以通过单击 OK 按钮关闭窗体。

RecordForm in designer

图 4:RecordForm 设计

ViewImagesForm

此窗体的大部分内容是在运行时创建的。设计器仅包含一个填充整个客户区域的 Panel 容器。一旦用户选择查看图像,将首先计算数据库中的图像数量。然后创建相应数量的 ImageButton 并将其添加到 Panel 中,每个按钮显示一个图像缩略图(参见图 5)。用户可以单击其中任何一个 ImageButton。然后,图像将使用 ImageBox 显示在 ViewImages 窗体的整个客户区域(参见图 6)。

Thumbnails of images Full view of an image
图 5:ViewImages 窗体 图 6:ViewImages 窗体 - 显示图像

应用程序逻辑

应用程序的逻辑如图 7 所示。状态图显示了各个窗体如何以及何时显示。您可以看到录制语音备忘录是可选的。如果用户选择不录制语音备忘录,则会将 DBNull.Value 存储到 Image 表的 Audio 列中。

Application's state diagram

图 7:状态图

结论

随身携带一个智能相机,它不仅可以拍照,还可以让用户对其进行处理并将其保存到数据库中,这在许多商业领域都非常有用。然后,移动数据库可以与公司的主要数据库服务器同步,确保数据的可访问性和安全性。您可以 在此处 下载整个应用程序,包括 C# 源代码。

© . All rights reserved.