# USBCamCapture **Repository Path**: lililove2000/usb-camera-capture ## Basic Information - **Project Name**: USBCamCapture - **Description**: 📷 基于 C# 和 AForge.NET 的 USB 摄像头拍照工具,支持实时预览、绿色裁剪框参考、一键生成 260 × 378 像素且 ≤ 200KB 的 JPEG 照片。摄像头型号、分辨率及保存路径自动记忆,启动即用,适合需要批量、规范尺寸拍摄的场景。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-28 - **Last Updated**: 2026-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```markdown # 📷 USB 摄像头拍照软件 (260×378) 基于 C# 和 AForge.NET 的 Windows 桌面工具,用于 USB 摄像头实时预览、中心裁剪并输出 **260×378 像素** 且 **≤200KB** 的 JPEG 照片。支持摄像头和分辨率自动记忆,配置保存在程序根目录下的 `settings.xml` 中,启动即用。 [![Gitee 仓库](https://img.shields.io/badge/Gitee-仓库地址-red?logo=gitee)](https://gitee.com/lililove2000/usb-camera-capture) --- ## ✨ 主要功能 - **实时预览**:自动识别 USB 摄像头,支持切换设备,预览流畅无卡顿。 - **分辨率自由选择**:列出摄像头支持的所有分辨率,智能推荐满足 `260×378` 的最小分辨率。 - **绿色裁剪参考框**:预览画面中央叠加 260:378 比例的绿色矩形,直观显示会被裁剪的区域。 - **一键拍照自动保存**: - 自动生成时间戳文件名(`照片_20260429_153045.jpg`) - 从画面中心按 260:378 比例裁剪 - 缩放至精确 `260×378` 像素 - JPEG 质量自动调整,确保文件 ≤ 200KB - **保存路径自定义**:通过按钮选择任意文件夹,程序会记录并自动使用。 - **配置自动记忆**:摄像头型号、分辨率、保存路径在关闭时自动保存,下次启动直接加载并自动预览。 - **历史记录显示**:底部多行文本框记录每次保存的文件名和大小,支持滚动查看。 - **独立配置文件**:设置保存在 `settings.xml` 中,与可执行文件同目录,方便复制、备份和手动修改。 --- ## 🖥️ 软件截图 > 你可以在此处插入软件运行截图,例如: > > ![主界面](screenshots/main.png) --- ## 🛠️ 技术栈 | 技术/库 | 用途 | |----------|------| | .NET Framework 4.8 (C# WinForms) | 桌面应用程序框架 | | AForge.Video / AForge.Video.DirectShow | 摄像头采集与视频流处理 | | System.Drawing | 图像裁剪、缩放、JPEG 编码 | | 自定义 `ConfigHelper` 类 | 读写根目录 XML 配置文件 | --- ## 📦 环境要求 - 操作系统:Windows 7 / 8 / 10 / 11 - 运行时:.NET Framework 4.8 - 硬件:一个可用的 USB 摄像头(UVC 协议) - 开发环境(仅编译时需要):Visual Studio 2022 或更高版本 --- ## 🚀 快速开始 ### 1. 获取源码 ```bash git clone https://gitee.com/lililove2000/usb-camera-capture.git ``` ### 2. 打开项目 用 Visual Studio 2022 双击 `USBCamCapture.sln`。 ### 3. 安装依赖 在 NuGet 包管理器中确认已安装以下包(项目已包含引用,若缺失请手动安装): - `AForge.Video` - `AForge.Video.DirectShow` ### 4. 设置目标平台 许多 USB 摄像头需要 **x86** 平台才能正常预览,请按以下步骤修改: - 菜单 → 生成 → 配置管理器 - 活动解决方案平台选择 **x86**(若没有则新建一个,从 Any CPU 复制设置) ### 5. 编译并运行 按 `F5` 启动程序。 --- ## 📖 使用说明 1. **选择摄像头**:下拉框中选择你的 USB 设备,程序会自动开始预览。 2. **调整分辨率**:分辨率下拉框中会列出所有可用分辨率,程序会优先选择满足 `260×378` 的最高选项。 3. **设置保存路径**:点击 **📁 设置路径** 按钮,选择照片保存的文件夹。 4. **拍照保存**:确认预览画面中的绿色裁剪框位置正确后,点击 **📷 拍照保存**,照片将直接存入设定文件夹,并在底部日志区显示文件名和大小。 5. **停止/关闭**:点击 **停止预览** 可释放摄像头;直接关闭窗口程序会自动停止摄像头并保存当前配置。 --- ## 📁 项目结构 ``` usb-camera-capture/ ├── FrmMain.cs # 主窗体业务逻辑(预览、裁剪、保存、配置读写等) ├── FrmMain.Designer.cs # 设计器生成的控件布局代码(UI 分离) ├── Program.cs # 应用程序入口 ├── ConfigHelper.cs # 自定义 XML 配置文件读写类 ├── App.config # 默认配置文件(运行时配置独立于 settings.xml) ├── Properties/ # 项目属性(包含 Settings.settings 等) ├── settings.xml # 用户配置文件(运行后自动生成在输出目录) ├── CameraIcon.ico # 程序图标(可选) └── README.md # 本说明文件 ``` --- ## ⚙️ 配置文件 程序首次运行后,会在可执行文件所在目录生成 `settings.xml`,内容如下: ```xml aoni webcam A30 1920 x 1080 C:\Users\YourName\Pictures\Photo ``` - **CameraName**:上次使用的摄像头名称(必须与下拉列表中的完全一致)。 - **Resolution**:上次选择的分辨率(格式如 `宽度 x 高度`)。 - **SavePath**:照片保存的文件夹路径。 你可以直接用记事本编辑该文件,修改后重启程序即可生效。 --- ## 🐛 常见问题 ### Q: 预览画面是黑色的,没有图像? 1. 确保摄像头没有被其他程序(如微信、腾讯会议等)占用。 2. 将项目编译平台切换为 **x86** 后重新生成。 3. 点击 **开始预览** 按钮手动重试。 4. 重新插拔摄像头或重启电脑。 ### Q: 拍出的照片尺寸不是 260×378? 程序会从原图中心按 260:378 的比例裁剪,然后缩放到精确尺寸。如果原图比例不同,上下或左右会被裁切,但最终输出必然是 260×378。 ### Q: 照片文件大于 200KB 怎么办? 保存时程序会自动降低 JPEG 质量(从 95% 逐渐降至 10%),直到文件大小 ≤200KB。如果即使质量 10 仍然超限,说明原图信息量过大,请尝试选择较低的分辨率。 ### Q: 配置文件没有生效或找不到? - 检查程序运行目录(如 `bin\Debug` 或发布文件夹)下是否有 `settings.xml`。 - 如果目录没有写入权限,配置文件可能无法生成,请将程序放到有写入权限的位置(如桌面)。 - 手动创建的 `settings.xml` 必须符合上述格式,且文件编码为 UTF-8。 --- ## 📄 许可证 本项目仅供学习和个人使用。 --- ## 🙏 致谢 - [AForge.NET](http://www.aforgenet.com/) 提供的视频采集框架 - Microsoft .NET Framework 团队 - 所有参与测试和反馈的朋友