mcp-imgutils


Namemcp-imgutils JSON
Version 5.2.0 PyPI version JSON
download
home_pageNone
SummaryMCP服务:将本地图片和网络图片发送给LLM
upload_time2025-08-10 18:41:04
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # MCP图片工具服务

这是一个基于Model Context Protocol (MCP)的全方位图片工具服务,提供图片分析和AI图片生成功能。

## 功能特性

### 📊 图片分析功能
- **🖼️ 图片查看与分析**: 将本地图片和网络图片转换为LLM可分析的格式
- **🌐 URL图片支持**: 直接支持HTTP/HTTPS图片URL,无需下载到本地
- **📊 完整图片信息**: 获取分辨率、大小、格式、颜色模式等技术参数
- **📷 EXIF元数据提取**: 提取拍摄参数、设备信息、GPS数据等完整EXIF信息
- **🔄 智能格式处理**: 自动处理各种图片格式和大小调整
- **🔒 安全验证**: URL格式验证、Content-Type检查、超时控制
- **🧹 自动清理**: 临时文件自动管理,无磁盘泄漏
- **📝 专业术语支持**: 保持英文EXIF键名,便于LLM理解专业摄影术语

### 🎨 AI图片生成功能
- **🚀 多模型支持**: 支持 BFL FLUX 和 OpenAI DALL-E 系列模型
  - **BFL FLUX**: flux-pro-1.1, flux-pro-1.1-ultra, flux-pro, flux-dev
  - **OpenAI DALL-E**: dall-e-3, dall-e-2
- **📐 智能尺寸**: 预设尺寸和自定义尺寸,自动调整到最佳参数
- **⚡ 高质量生成**: 业界领先的文本生成图片质量
- **📁 本地保存**: 图片自动下载到本地目录,避免大文件传输问题
- **🛡️ 完整错误处理**: API限制、网络错误、参数验证等全面处理
- **🔄 智能工作流**: 生成后可直接使用view_image工具查看分析
- **🎯 灵活配置**: 支持临时路径覆盖,满足不同使用场景

## 安装

确保已安装必要的依赖:

```bash
uv install
# 或者
pip install -e .
```

## 使用方法

### Claude Desktop配置

这是一个MCP服务器,需要通过Claude Desktop配置使用。

**配置文件位置**:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

**配置内容**:

在Claude Desktop的配置文件中添加以下配置:

```json
{
  "mcpServers": {
    "mcp-imgutils": {
      "command": "uvx",
      "args": ["mcp-imgutils"],
      "env": {
        "BFL_API_KEY": "your-bfl-api-key-here",
        "OPENAI_API_KEY": "your-openai-api-key-here"
      }
    }
  }
}
```

### 🔑 API密钥配置

#### BFL (Black Forest Labs) API密钥

要使用 BFL FLUX 模型生成图片,需要配置 BFL API密钥:

1. **获取API密钥**: 访问 [BFL API Portal](https://api.bfl.ai/) 注册并获取API密钥
2. **配置方式**:
   - **方式1 (推荐)**: 在Claude Desktop配置中添加环境变量(如上所示)
   - **方式2**: 设置系统环境变量 `export BFL_API_KEY=your-api-key`

#### OpenAI API密钥

要使用 OpenAI DALL-E 模型生成图片,需要配置 OpenAI API密钥:

1. **获取API密钥**: 访问 [OpenAI API Portal](https://platform.openai.com/api-keys) 注册并获取API密钥
2. **配置方式**:
   - **方式1 (推荐)**: 在Claude Desktop配置中添加环境变量(如上所示)
   - **方式2**: 设置系统环境变量 `export OPENAI_API_KEY=your-api-key`

#### 图片保存目录配置(可选)

默认情况下,生成的图片保存到:

**BFL FLUX 模型**:
- **Windows/macOS**: `~/Pictures/BFL_Generated/`
- **Linux**: `~/Pictures/BFL_Generated/` 或 `~/BFL_Generated/`

**OpenAI DALL-E 模型**:
- **Windows/macOS**: `~/Pictures/OpenAI_Generated/`
- **Linux**: `~/Pictures/OpenAI_Generated/` 或 `~/OpenAI_Generated/`

自定义保存目录:

```json
{
  "mcpServers": {
    "mcp-imgutils": {
      "command": "uvx",
      "args": ["mcp-imgutils"],
      "env": {
        "BFL_API_KEY": "your-bfl-api-key-here",
        "OPENAI_API_KEY": "your-openai-api-key-here",
        "BFL_IMAGE_SAVE_DIR": "~/MyImages/BFL_Generated",
        "OPENAI_IMAGE_SAVE_DIR": "~/MyImages/OpenAI_Generated"
      }
    }
  }
}
```

**注意**:

- 必须使用绝对路径,不能使用相对路径
- 配置完成后需要重启Claude Desktop
- 没有API密钥时,图片生成功能将不可用,但图片分析功能正常工作

## 工具使用示例

一旦服务运行起来,你可以在Claude中使用以下工具:

### 📊 view_image - 图片查看与分析

查看并分析本地图片或网络图片,获取完整的图片信息和EXIF元数据。

### 🎨 generate_image_bfl - AI图片生成

使用BFL FLUX模型生成高质量图片。

**view_image参数:**

- `image_path` - 图片文件的完整路径或HTTP/HTTPS URL
- `max_file_size` (可选) - 允许的最大文件大小(字节,默认5MB,仅适用于本地文件)

**generate_image_bfl参数:**

- `prompt` (必需) - 图片描述文本
  - ⚠️ **语言支持**: BFL FLUX模型主要支持英文提示词,建议使用英文以获得最佳效果
- `model` (可选) - FLUX模型选择:
  - `flux-dev` (默认) - 开发版本,免费使用
  - `flux-pro` - 专业版本,更高质量
  - `flux-pro-1.1` - 最新专业版本
  - `flux-pro-1.1-ultra` - 超高质量版本
- `preset_size` (可选) - 预设尺寸,如:
  - `desktop_fhd` - 桌面壁纸 Full HD
  - `mobile_portrait` - 手机竖屏
  - `instagram_square` - Instagram正方形
  - `default` - 默认尺寸 (1920x1080 Full HD)
- `width`, `height` (可选) - 自定义尺寸(如果不使用preset_size)

**💡 智能默认**: 不指定尺寸时使用1920x1080 (Full HD),适合现代屏幕。
**🎯 用户友好**: 用户可描述用途(如"桌面壁纸"、"手机壁纸"),LLM自动选择最佳设置。

**支持的图片来源:**

- **本地文件**: `/Users/john/Photos/sunset.jpg`
- **网络图片**: `https://example.com/image.jpg`
- **各种域名**: 支持任何可访问的HTTP/HTTPS图片URL

**返回内容:**

1. **详细的图片信息文本**,包括:
   - 文件名、路径、大小
   - 图片格式、分辨率、颜色模式
   - 总像素数等技术参数

2. **EXIF元数据**(如果有),包括:
   - 拍摄设备信息(Make, Model, Software)
   - 拍摄参数(ExposureTime, FNumber, ISOSpeedRatings, FocalLength)
   - 拍摄时间(DateTime, DateTimeOriginal)
   - 技术参数(ColorSpace, Flash, MeteringMode)
   - 所有其他可用的EXIF字段

3. **图片的视觉内容**,供LLM进行图像分析

### 使用示例

配置完成后,在Claude Desktop中:

#### 📊 本地图片分析

```text
用户: 请分析这张照片 /Users/john/Photos/sunset.jpg

Claude: [调用 view_image 工具]
```

#### 🌐 网络图片分析

```text
用户: 请分析这张网络图片 https://example.com/photo.jpg

Claude: [调用 view_image 工具]
```

#### 🎨 AI图片生成

```text
用户: 请用BFL生成一张中国女孩的图片

Claude: [调用 generate_image_bfl 工具]
       ✅ 图片生成成功!
       📁 本地路径: ~/Pictures/BFL_Generated/20250803_131535_flux-dev_1024x768_Chinese_girl_abc123.jpg

       [自动调用 view_image 工具显示生成的图片]
```

#### 🎯 指定模型和尺寸生成

```text
用户: 用flux-pro模型生成一张1280x720的科幻城市图片

Claude: [调用 generate_image_bfl 工具,参数:
- prompt: "科幻城市"
- model: "flux-pro"
- width: 1280
- height: 720]
```

#### 📐 使用预设尺寸

```text
用户: 生成一张适合Instagram的正方形图片,内容是可爱的小猫

Claude: [调用 generate_image_bfl 工具,参数:
- prompt: "可爱的小猫"
- preset_size: "instagram_square"]
       ✅ 图片生成成功!
       📁 本地路径: ~/Pictures/BFL_Generated/20250803_131535_flux-dev_1024x1024_cute_cat_abc123.jpg

       [自动调用 view_image 工具显示生成的图片]
```

### 🎨 generate_image_openai - OpenAI DALL-E 图片生成

使用 OpenAI DALL-E 模型生成高质量图片。

**generate_image_openai参数:**

- `prompt` (必需) - 图片描述文本
  - ✅ **语言支持**: DALL-E 支持中文和英文提示词
- `model` (可选) - DALL-E 模型选择:
  - `dall-e-3` (默认) - 最新版本,更高质量和更好的提示词理解
  - `dall-e-2` - 经典版本,支持多张图片生成
- `preset_size` (可选) - 预设尺寸,如:
  - `default` - 默认尺寸 (1024x1024)
  - `square` - 正方形 (1024x1024)
  - `landscape` - 横向 (1792x1024)
  - `portrait` - 纵向 (1024x1792)
- `size` (可选) - 自定义尺寸(如果不使用preset_size)
  - DALL-E 3: `1024x1024`, `1792x1024`, `1024x1792`
  - DALL-E 2: `256x256`, `512x512`, `1024x1024`
- `quality` (可选) - 图片质量(仅 DALL-E 3):
  - `standard` (默认) - 标准质量,更快更便宜
  - `hd` - 高清质量,更慢更贵
- `style` (可选) - 图片风格(仅 DALL-E 3):
  - `vivid` (默认) - 生动风格,色彩鲜艳
  - `natural` - 自然风格,更真实
- `n` (可选) - 生成图片数量:
  - DALL-E 3: 固定为 1
  - DALL-E 2: 1-10 张
- `download_path` (可选) - 临时指定下载路径

#### OpenAI DALL-E 使用示例

##### 🎨 基本图片生成

```text
用户: 请用OpenAI生成一张中国女孩的图片

Claude: [调用 generate_image_openai 工具]
       ✅ 图片生成成功!
       📁 本地路径: ~/Pictures/OpenAI_Generated/20250803_131535_dall-e-3_1024x1024_Chinese_girl_abc123.jpg

       [自动调用 view_image 工具显示生成的图片]
```

##### 🎯 指定模型和质量

```text
用户: 用dall-e-3高清模式生成一张科幻城市图片

Claude: [调用 generate_image_openai 工具,参数:
- prompt: "科幻城市"
- model: "dall-e-3"
- quality: "hd"
- preset_size: "landscape"]
```

##### 📐 使用预设尺寸和风格

```text
用户: 生成一张自然风格的正方形图片,内容是可爱的小猫

Claude: [调用 generate_image_openai 工具,参数:
- prompt: "可爱的小猫"
- preset_size: "square"
- style: "natural"]
       ✅ 图片生成成功!
       📁 本地路径: ~/Pictures/OpenAI_Generated/20250803_131535_dall-e-3_1024x1024_cute_cat_abc123.jpg

       [自动调用 view_image 工具显示生成的图片]
```

#### 网络图片分析

```text
用户: 请分析这张网络图片 https://img.youtube.com/vi/iv-5mZ_9CPY/maxresdefault.jpg

Claude: [调用 view_image 工具]

返回结果:
图片详细信息:
文件名: URL: https://img.youtube.com/vi/iv-5mZ_9CPY/maxresdefault.jpg
文件路径: /tmp/tmp9rizrzqv.jpg
文件大小: 290,434 字节 (283.63 KB, 0.28 MB)
图片格式: JPEG
分辨率: 1280 x 720
颜色模式: RGB
总像素数: 921,600

[同时显示图片内容供分析]
```

## 🌐 URL图片支持

### 支持的URL类型

- **HTTP/HTTPS协议**: `http://` 和 `https://` 开头的URL
- **各种域名**: 支持任何可公开访问的图片URL
- **常见图片网站**:
  - YouTube缩略图: `https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg`
  - 社交媒体图片: Twitter、Instagram、Facebook等
  - 图片托管服务: Imgur、Flickr、Google Photos等
  - CDN图片: 各种内容分发网络的图片

### 安全特性

- **协议限制**: 仅允许HTTP和HTTPS协议,拒绝其他协议
- **Content-Type验证**: 确保URL返回的是图片内容
- **超时控制**: 30秒下载超时,避免长时间等待
- **自动重定向**: 支持最多5次重定向跟踪
- **临时文件管理**: 下载的图片存储在系统临时目录,处理完自动清理

### 使用注意事项

- **网络连接**: 需要稳定的网络连接访问外部URL
- **访问权限**: 某些网站可能有防爬虫机制,可能无法访问
- **文件大小**: URL图片不受本地文件大小限制,遵循MCP协议处理
- **隐私考虑**: 访问URL时会暴露您的IP地址给目标服务器

## 支持的图片格式

- JPEG (.jpg, .jpeg)
- PNG (.png)
- GIF (.gif)
- BMP (.bmp)
- WebP (.webp)

### 图片处理

- 默认最大文件大小限制为5MB
- 所有非JPEG格式的图片会被转换为JPEG以减小大小
- 对于包含透明通道的图片(如PNG),会在转换时添加白色背景
- 使用优化的JPEG压缩算法减小输出文件大小

### 错误处理

服务包含全面的错误处理机制:

**本地文件错误:**

- 图片路径验证(文件是否存在)
- 文件大小检查
- 图片格式验证
- 文件权限检查

**网络图片错误:**

- URL格式验证
- 网络连接错误(超时、DNS失败等)
- HTTP状态错误(404、403、500等)
- Content-Type验证(确保是图片内容)
- 下载失败处理

**通用错误:**

- 异常捕获和友好错误消息
- 临时文件清理(即使出错也会清理)

## EXIF元数据支持

该服务提供完整的EXIF元数据提取功能:

### 支持的EXIF信息类型

- **设备信息**: 相机品牌、型号、软件版本
- **拍摄参数**: 曝光时间、光圈值、ISO感光度、焦距
- **拍摄时间**: 拍摄时间、数字化时间、原始时间
- **技术参数**: 色彩空间、闪光灯设置、测光模式、曝光程序
- **图片属性**: EXIF图片尺寸、方向信息
- **GPS信息**: 地理位置数据(如果有)
- **其他元数据**: 所有可用的EXIF标签

### EXIF数据处理特性

- **智能类型处理**: 自动处理字节数据、分数值、浮点数等不同数据类型
- **英文键名**: 保持原始EXIF标签名,便于LLM理解专业术语
- **优雅降级**: 没有EXIF数据的图片不会显示空白部分
- **完整提取**: 提取所有可用的EXIF字段,不预设限制

## 扩展性

该服务设计为可扩展的,未来可以添加更多功能:

- **更多图片格式**: 支持RAW格式、HEIC等
- **图片预处理**: 裁剪、缩放、旋转等操作
- **高级分析**: 颜色分布、直方图、对象检测
- **批量处理**: 同时处理多个图片文件或URL
- **AI增强**: 图片质量评估、场景识别等
- **缓存机制**: URL图片智能缓存,提高重复访问性能
- **代理支持**: 支持HTTP代理访问受限网络中的图片
- **认证支持**: 支持需要认证的私有图片URL

## 注意事项

### 文件路径

- 图片路径必须是完整的绝对路径
- 支持跨平台路径格式(Windows、macOS、Linux)

### 隐私与安全

- 服务不会修改原始图片文件
- 图片数据不会被永久存储,仅在处理过程中临时使用
- EXIF数据可能包含敏感信息(如GPS位置),请注意隐私保护

### 性能考虑

- 默认最大文件大小限制为5MB,可通过参数调整
- 大型图片会自动进行质量优化以减小传输大小
- EXIF提取对性能影响很小,适合实时使用

### 兼容性

- 支持所有主流图片格式的EXIF数据
- 某些格式(如PNG、GIF)可能不包含EXIF信息
- AI生成的图片通常不包含传统的拍摄参数EXIF数据

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mcp-imgutils",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/80/af/b2caea3a10363d2c5499377b11b6351599f7a5edf0e5149a61d87a583768/mcp_imgutils-5.2.0.tar.gz",
    "platform": null,
    "description": "# MCP\u56fe\u7247\u5de5\u5177\u670d\u52a1\n\n\u8fd9\u662f\u4e00\u4e2a\u57fa\u4e8eModel Context Protocol (MCP)\u7684\u5168\u65b9\u4f4d\u56fe\u7247\u5de5\u5177\u670d\u52a1\uff0c\u63d0\u4f9b\u56fe\u7247\u5206\u6790\u548cAI\u56fe\u7247\u751f\u6210\u529f\u80fd\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n### \ud83d\udcca \u56fe\u7247\u5206\u6790\u529f\u80fd\n- **\ud83d\uddbc\ufe0f \u56fe\u7247\u67e5\u770b\u4e0e\u5206\u6790**: \u5c06\u672c\u5730\u56fe\u7247\u548c\u7f51\u7edc\u56fe\u7247\u8f6c\u6362\u4e3aLLM\u53ef\u5206\u6790\u7684\u683c\u5f0f\n- **\ud83c\udf10 URL\u56fe\u7247\u652f\u6301**: \u76f4\u63a5\u652f\u6301HTTP/HTTPS\u56fe\u7247URL\uff0c\u65e0\u9700\u4e0b\u8f7d\u5230\u672c\u5730\n- **\ud83d\udcca \u5b8c\u6574\u56fe\u7247\u4fe1\u606f**: \u83b7\u53d6\u5206\u8fa8\u7387\u3001\u5927\u5c0f\u3001\u683c\u5f0f\u3001\u989c\u8272\u6a21\u5f0f\u7b49\u6280\u672f\u53c2\u6570\n- **\ud83d\udcf7 EXIF\u5143\u6570\u636e\u63d0\u53d6**: \u63d0\u53d6\u62cd\u6444\u53c2\u6570\u3001\u8bbe\u5907\u4fe1\u606f\u3001GPS\u6570\u636e\u7b49\u5b8c\u6574EXIF\u4fe1\u606f\n- **\ud83d\udd04 \u667a\u80fd\u683c\u5f0f\u5904\u7406**: \u81ea\u52a8\u5904\u7406\u5404\u79cd\u56fe\u7247\u683c\u5f0f\u548c\u5927\u5c0f\u8c03\u6574\n- **\ud83d\udd12 \u5b89\u5168\u9a8c\u8bc1**: URL\u683c\u5f0f\u9a8c\u8bc1\u3001Content-Type\u68c0\u67e5\u3001\u8d85\u65f6\u63a7\u5236\n- **\ud83e\uddf9 \u81ea\u52a8\u6e05\u7406**: \u4e34\u65f6\u6587\u4ef6\u81ea\u52a8\u7ba1\u7406\uff0c\u65e0\u78c1\u76d8\u6cc4\u6f0f\n- **\ud83d\udcdd \u4e13\u4e1a\u672f\u8bed\u652f\u6301**: \u4fdd\u6301\u82f1\u6587EXIF\u952e\u540d\uff0c\u4fbf\u4e8eLLM\u7406\u89e3\u4e13\u4e1a\u6444\u5f71\u672f\u8bed\n\n### \ud83c\udfa8 AI\u56fe\u7247\u751f\u6210\u529f\u80fd\n- **\ud83d\ude80 \u591a\u6a21\u578b\u652f\u6301**: \u652f\u6301 BFL FLUX \u548c OpenAI DALL-E \u7cfb\u5217\u6a21\u578b\n  - **BFL FLUX**: flux-pro-1.1, flux-pro-1.1-ultra, flux-pro, flux-dev\n  - **OpenAI DALL-E**: dall-e-3, dall-e-2\n- **\ud83d\udcd0 \u667a\u80fd\u5c3a\u5bf8**: \u9884\u8bbe\u5c3a\u5bf8\u548c\u81ea\u5b9a\u4e49\u5c3a\u5bf8\uff0c\u81ea\u52a8\u8c03\u6574\u5230\u6700\u4f73\u53c2\u6570\n- **\u26a1 \u9ad8\u8d28\u91cf\u751f\u6210**: \u4e1a\u754c\u9886\u5148\u7684\u6587\u672c\u751f\u6210\u56fe\u7247\u8d28\u91cf\n- **\ud83d\udcc1 \u672c\u5730\u4fdd\u5b58**: \u56fe\u7247\u81ea\u52a8\u4e0b\u8f7d\u5230\u672c\u5730\u76ee\u5f55\uff0c\u907f\u514d\u5927\u6587\u4ef6\u4f20\u8f93\u95ee\u9898\n- **\ud83d\udee1\ufe0f \u5b8c\u6574\u9519\u8bef\u5904\u7406**: API\u9650\u5236\u3001\u7f51\u7edc\u9519\u8bef\u3001\u53c2\u6570\u9a8c\u8bc1\u7b49\u5168\u9762\u5904\u7406\n- **\ud83d\udd04 \u667a\u80fd\u5de5\u4f5c\u6d41**: \u751f\u6210\u540e\u53ef\u76f4\u63a5\u4f7f\u7528view_image\u5de5\u5177\u67e5\u770b\u5206\u6790\n- **\ud83c\udfaf \u7075\u6d3b\u914d\u7f6e**: \u652f\u6301\u4e34\u65f6\u8def\u5f84\u8986\u76d6\uff0c\u6ee1\u8db3\u4e0d\u540c\u4f7f\u7528\u573a\u666f\n\n## \u5b89\u88c5\n\n\u786e\u4fdd\u5df2\u5b89\u88c5\u5fc5\u8981\u7684\u4f9d\u8d56\uff1a\n\n```bash\nuv install\n# \u6216\u8005\npip install -e .\n```\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### Claude Desktop\u914d\u7f6e\n\n\u8fd9\u662f\u4e00\u4e2aMCP\u670d\u52a1\u5668\uff0c\u9700\u8981\u901a\u8fc7Claude Desktop\u914d\u7f6e\u4f7f\u7528\u3002\n\n**\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e**:\n\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n**\u914d\u7f6e\u5185\u5bb9**:\n\n\u5728Claude Desktop\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-imgutils\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-imgutils\"],\n      \"env\": {\n        \"BFL_API_KEY\": \"your-bfl-api-key-here\",\n        \"OPENAI_API_KEY\": \"your-openai-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n### \ud83d\udd11 API\u5bc6\u94a5\u914d\u7f6e\n\n#### BFL (Black Forest Labs) API\u5bc6\u94a5\n\n\u8981\u4f7f\u7528 BFL FLUX \u6a21\u578b\u751f\u6210\u56fe\u7247\uff0c\u9700\u8981\u914d\u7f6e BFL API\u5bc6\u94a5\uff1a\n\n1. **\u83b7\u53d6API\u5bc6\u94a5**: \u8bbf\u95ee [BFL API Portal](https://api.bfl.ai/) \u6ce8\u518c\u5e76\u83b7\u53d6API\u5bc6\u94a5\n2. **\u914d\u7f6e\u65b9\u5f0f**:\n   - **\u65b9\u5f0f1 (\u63a8\u8350)**: \u5728Claude Desktop\u914d\u7f6e\u4e2d\u6dfb\u52a0\u73af\u5883\u53d8\u91cf\uff08\u5982\u4e0a\u6240\u793a\uff09\n   - **\u65b9\u5f0f2**: \u8bbe\u7f6e\u7cfb\u7edf\u73af\u5883\u53d8\u91cf `export BFL_API_KEY=your-api-key`\n\n#### OpenAI API\u5bc6\u94a5\n\n\u8981\u4f7f\u7528 OpenAI DALL-E \u6a21\u578b\u751f\u6210\u56fe\u7247\uff0c\u9700\u8981\u914d\u7f6e OpenAI API\u5bc6\u94a5\uff1a\n\n1. **\u83b7\u53d6API\u5bc6\u94a5**: \u8bbf\u95ee [OpenAI API Portal](https://platform.openai.com/api-keys) \u6ce8\u518c\u5e76\u83b7\u53d6API\u5bc6\u94a5\n2. **\u914d\u7f6e\u65b9\u5f0f**:\n   - **\u65b9\u5f0f1 (\u63a8\u8350)**: \u5728Claude Desktop\u914d\u7f6e\u4e2d\u6dfb\u52a0\u73af\u5883\u53d8\u91cf\uff08\u5982\u4e0a\u6240\u793a\uff09\n   - **\u65b9\u5f0f2**: \u8bbe\u7f6e\u7cfb\u7edf\u73af\u5883\u53d8\u91cf `export OPENAI_API_KEY=your-api-key`\n\n#### \u56fe\u7247\u4fdd\u5b58\u76ee\u5f55\u914d\u7f6e\uff08\u53ef\u9009\uff09\n\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u751f\u6210\u7684\u56fe\u7247\u4fdd\u5b58\u5230\uff1a\n\n**BFL FLUX \u6a21\u578b**:\n- **Windows/macOS**: `~/Pictures/BFL_Generated/`\n- **Linux**: `~/Pictures/BFL_Generated/` \u6216 `~/BFL_Generated/`\n\n**OpenAI DALL-E \u6a21\u578b**:\n- **Windows/macOS**: `~/Pictures/OpenAI_Generated/`\n- **Linux**: `~/Pictures/OpenAI_Generated/` \u6216 `~/OpenAI_Generated/`\n\n\u81ea\u5b9a\u4e49\u4fdd\u5b58\u76ee\u5f55\uff1a\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-imgutils\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-imgutils\"],\n      \"env\": {\n        \"BFL_API_KEY\": \"your-bfl-api-key-here\",\n        \"OPENAI_API_KEY\": \"your-openai-api-key-here\",\n        \"BFL_IMAGE_SAVE_DIR\": \"~/MyImages/BFL_Generated\",\n        \"OPENAI_IMAGE_SAVE_DIR\": \"~/MyImages/OpenAI_Generated\"\n      }\n    }\n  }\n}\n```\n\n**\u6ce8\u610f**:\n\n- \u5fc5\u987b\u4f7f\u7528\u7edd\u5bf9\u8def\u5f84\uff0c\u4e0d\u80fd\u4f7f\u7528\u76f8\u5bf9\u8def\u5f84\n- \u914d\u7f6e\u5b8c\u6210\u540e\u9700\u8981\u91cd\u542fClaude Desktop\n- \u6ca1\u6709API\u5bc6\u94a5\u65f6\uff0c\u56fe\u7247\u751f\u6210\u529f\u80fd\u5c06\u4e0d\u53ef\u7528\uff0c\u4f46\u56fe\u7247\u5206\u6790\u529f\u80fd\u6b63\u5e38\u5de5\u4f5c\n\n## \u5de5\u5177\u4f7f\u7528\u793a\u4f8b\n\n\u4e00\u65e6\u670d\u52a1\u8fd0\u884c\u8d77\u6765\uff0c\u4f60\u53ef\u4ee5\u5728Claude\u4e2d\u4f7f\u7528\u4ee5\u4e0b\u5de5\u5177\uff1a\n\n### \ud83d\udcca view_image - \u56fe\u7247\u67e5\u770b\u4e0e\u5206\u6790\n\n\u67e5\u770b\u5e76\u5206\u6790\u672c\u5730\u56fe\u7247\u6216\u7f51\u7edc\u56fe\u7247\uff0c\u83b7\u53d6\u5b8c\u6574\u7684\u56fe\u7247\u4fe1\u606f\u548cEXIF\u5143\u6570\u636e\u3002\n\n### \ud83c\udfa8 generate_image_bfl - AI\u56fe\u7247\u751f\u6210\n\n\u4f7f\u7528BFL FLUX\u6a21\u578b\u751f\u6210\u9ad8\u8d28\u91cf\u56fe\u7247\u3002\n\n**view_image\u53c2\u6570:**\n\n- `image_path` - \u56fe\u7247\u6587\u4ef6\u7684\u5b8c\u6574\u8def\u5f84\u6216HTTP/HTTPS URL\n- `max_file_size` (\u53ef\u9009) - \u5141\u8bb8\u7684\u6700\u5927\u6587\u4ef6\u5927\u5c0f\uff08\u5b57\u8282\uff0c\u9ed8\u8ba45MB\uff0c\u4ec5\u9002\u7528\u4e8e\u672c\u5730\u6587\u4ef6\uff09\n\n**generate_image_bfl\u53c2\u6570:**\n\n- `prompt` (\u5fc5\u9700) - \u56fe\u7247\u63cf\u8ff0\u6587\u672c\n  - \u26a0\ufe0f **\u8bed\u8a00\u652f\u6301**: BFL FLUX\u6a21\u578b\u4e3b\u8981\u652f\u6301\u82f1\u6587\u63d0\u793a\u8bcd\uff0c\u5efa\u8bae\u4f7f\u7528\u82f1\u6587\u4ee5\u83b7\u5f97\u6700\u4f73\u6548\u679c\n- `model` (\u53ef\u9009) - FLUX\u6a21\u578b\u9009\u62e9\uff1a\n  - `flux-dev` (\u9ed8\u8ba4) - \u5f00\u53d1\u7248\u672c\uff0c\u514d\u8d39\u4f7f\u7528\n  - `flux-pro` - \u4e13\u4e1a\u7248\u672c\uff0c\u66f4\u9ad8\u8d28\u91cf\n  - `flux-pro-1.1` - \u6700\u65b0\u4e13\u4e1a\u7248\u672c\n  - `flux-pro-1.1-ultra` - \u8d85\u9ad8\u8d28\u91cf\u7248\u672c\n- `preset_size` (\u53ef\u9009) - \u9884\u8bbe\u5c3a\u5bf8\uff0c\u5982\uff1a\n  - `desktop_fhd` - \u684c\u9762\u58c1\u7eb8 Full HD\n  - `mobile_portrait` - \u624b\u673a\u7ad6\u5c4f\n  - `instagram_square` - Instagram\u6b63\u65b9\u5f62\n  - `default` - \u9ed8\u8ba4\u5c3a\u5bf8 (1920x1080 Full HD)\n- `width`, `height` (\u53ef\u9009) - \u81ea\u5b9a\u4e49\u5c3a\u5bf8\uff08\u5982\u679c\u4e0d\u4f7f\u7528preset_size\uff09\n\n**\ud83d\udca1 \u667a\u80fd\u9ed8\u8ba4**: \u4e0d\u6307\u5b9a\u5c3a\u5bf8\u65f6\u4f7f\u75281920x1080 (Full HD)\uff0c\u9002\u5408\u73b0\u4ee3\u5c4f\u5e55\u3002\n**\ud83c\udfaf \u7528\u6237\u53cb\u597d**: \u7528\u6237\u53ef\u63cf\u8ff0\u7528\u9014\uff08\u5982\"\u684c\u9762\u58c1\u7eb8\"\u3001\"\u624b\u673a\u58c1\u7eb8\"\uff09\uff0cLLM\u81ea\u52a8\u9009\u62e9\u6700\u4f73\u8bbe\u7f6e\u3002\n\n**\u652f\u6301\u7684\u56fe\u7247\u6765\u6e90:**\n\n- **\u672c\u5730\u6587\u4ef6**: `/Users/john/Photos/sunset.jpg`\n- **\u7f51\u7edc\u56fe\u7247**: `https://example.com/image.jpg`\n- **\u5404\u79cd\u57df\u540d**: \u652f\u6301\u4efb\u4f55\u53ef\u8bbf\u95ee\u7684HTTP/HTTPS\u56fe\u7247URL\n\n**\u8fd4\u56de\u5185\u5bb9:**\n\n1. **\u8be6\u7ec6\u7684\u56fe\u7247\u4fe1\u606f\u6587\u672c**\uff0c\u5305\u62ec\uff1a\n   - \u6587\u4ef6\u540d\u3001\u8def\u5f84\u3001\u5927\u5c0f\n   - \u56fe\u7247\u683c\u5f0f\u3001\u5206\u8fa8\u7387\u3001\u989c\u8272\u6a21\u5f0f\n   - \u603b\u50cf\u7d20\u6570\u7b49\u6280\u672f\u53c2\u6570\n\n2. **EXIF\u5143\u6570\u636e**\uff08\u5982\u679c\u6709\uff09\uff0c\u5305\u62ec\uff1a\n   - \u62cd\u6444\u8bbe\u5907\u4fe1\u606f\uff08Make, Model, Software\uff09\n   - \u62cd\u6444\u53c2\u6570\uff08ExposureTime, FNumber, ISOSpeedRatings, FocalLength\uff09\n   - \u62cd\u6444\u65f6\u95f4\uff08DateTime, DateTimeOriginal\uff09\n   - \u6280\u672f\u53c2\u6570\uff08ColorSpace, Flash, MeteringMode\uff09\n   - \u6240\u6709\u5176\u4ed6\u53ef\u7528\u7684EXIF\u5b57\u6bb5\n\n3. **\u56fe\u7247\u7684\u89c6\u89c9\u5185\u5bb9**\uff0c\u4f9bLLM\u8fdb\u884c\u56fe\u50cf\u5206\u6790\n\n### \u4f7f\u7528\u793a\u4f8b\n\n\u914d\u7f6e\u5b8c\u6210\u540e\uff0c\u5728Claude Desktop\u4e2d\uff1a\n\n#### \ud83d\udcca \u672c\u5730\u56fe\u7247\u5206\u6790\n\n```text\n\u7528\u6237: \u8bf7\u5206\u6790\u8fd9\u5f20\u7167\u7247 /Users/john/Photos/sunset.jpg\n\nClaude: [\u8c03\u7528 view_image \u5de5\u5177]\n```\n\n#### \ud83c\udf10 \u7f51\u7edc\u56fe\u7247\u5206\u6790\n\n```text\n\u7528\u6237: \u8bf7\u5206\u6790\u8fd9\u5f20\u7f51\u7edc\u56fe\u7247 https://example.com/photo.jpg\n\nClaude: [\u8c03\u7528 view_image \u5de5\u5177]\n```\n\n#### \ud83c\udfa8 AI\u56fe\u7247\u751f\u6210\n\n```text\n\u7528\u6237: \u8bf7\u7528BFL\u751f\u6210\u4e00\u5f20\u4e2d\u56fd\u5973\u5b69\u7684\u56fe\u7247\n\nClaude: [\u8c03\u7528 generate_image_bfl \u5de5\u5177]\n       \u2705 \u56fe\u7247\u751f\u6210\u6210\u529f\uff01\n       \ud83d\udcc1 \u672c\u5730\u8def\u5f84: ~/Pictures/BFL_Generated/20250803_131535_flux-dev_1024x768_Chinese_girl_abc123.jpg\n\n       [\u81ea\u52a8\u8c03\u7528 view_image \u5de5\u5177\u663e\u793a\u751f\u6210\u7684\u56fe\u7247]\n```\n\n#### \ud83c\udfaf \u6307\u5b9a\u6a21\u578b\u548c\u5c3a\u5bf8\u751f\u6210\n\n```text\n\u7528\u6237: \u7528flux-pro\u6a21\u578b\u751f\u6210\u4e00\u5f201280x720\u7684\u79d1\u5e7b\u57ce\u5e02\u56fe\u7247\n\nClaude: [\u8c03\u7528 generate_image_bfl \u5de5\u5177\uff0c\u53c2\u6570\uff1a\n- prompt: \"\u79d1\u5e7b\u57ce\u5e02\"\n- model: \"flux-pro\"\n- width: 1280\n- height: 720]\n```\n\n#### \ud83d\udcd0 \u4f7f\u7528\u9884\u8bbe\u5c3a\u5bf8\n\n```text\n\u7528\u6237: \u751f\u6210\u4e00\u5f20\u9002\u5408Instagram\u7684\u6b63\u65b9\u5f62\u56fe\u7247\uff0c\u5185\u5bb9\u662f\u53ef\u7231\u7684\u5c0f\u732b\n\nClaude: [\u8c03\u7528 generate_image_bfl \u5de5\u5177\uff0c\u53c2\u6570\uff1a\n- prompt: \"\u53ef\u7231\u7684\u5c0f\u732b\"\n- preset_size: \"instagram_square\"]\n       \u2705 \u56fe\u7247\u751f\u6210\u6210\u529f\uff01\n       \ud83d\udcc1 \u672c\u5730\u8def\u5f84: ~/Pictures/BFL_Generated/20250803_131535_flux-dev_1024x1024_cute_cat_abc123.jpg\n\n       [\u81ea\u52a8\u8c03\u7528 view_image \u5de5\u5177\u663e\u793a\u751f\u6210\u7684\u56fe\u7247]\n```\n\n### \ud83c\udfa8 generate_image_openai - OpenAI DALL-E \u56fe\u7247\u751f\u6210\n\n\u4f7f\u7528 OpenAI DALL-E \u6a21\u578b\u751f\u6210\u9ad8\u8d28\u91cf\u56fe\u7247\u3002\n\n**generate_image_openai\u53c2\u6570:**\n\n- `prompt` (\u5fc5\u9700) - \u56fe\u7247\u63cf\u8ff0\u6587\u672c\n  - \u2705 **\u8bed\u8a00\u652f\u6301**: DALL-E \u652f\u6301\u4e2d\u6587\u548c\u82f1\u6587\u63d0\u793a\u8bcd\n- `model` (\u53ef\u9009) - DALL-E \u6a21\u578b\u9009\u62e9\uff1a\n  - `dall-e-3` (\u9ed8\u8ba4) - \u6700\u65b0\u7248\u672c\uff0c\u66f4\u9ad8\u8d28\u91cf\u548c\u66f4\u597d\u7684\u63d0\u793a\u8bcd\u7406\u89e3\n  - `dall-e-2` - \u7ecf\u5178\u7248\u672c\uff0c\u652f\u6301\u591a\u5f20\u56fe\u7247\u751f\u6210\n- `preset_size` (\u53ef\u9009) - \u9884\u8bbe\u5c3a\u5bf8\uff0c\u5982\uff1a\n  - `default` - \u9ed8\u8ba4\u5c3a\u5bf8 (1024x1024)\n  - `square` - \u6b63\u65b9\u5f62 (1024x1024)\n  - `landscape` - \u6a2a\u5411 (1792x1024)\n  - `portrait` - \u7eb5\u5411 (1024x1792)\n- `size` (\u53ef\u9009) - \u81ea\u5b9a\u4e49\u5c3a\u5bf8\uff08\u5982\u679c\u4e0d\u4f7f\u7528preset_size\uff09\n  - DALL-E 3: `1024x1024`, `1792x1024`, `1024x1792`\n  - DALL-E 2: `256x256`, `512x512`, `1024x1024`\n- `quality` (\u53ef\u9009) - \u56fe\u7247\u8d28\u91cf\uff08\u4ec5 DALL-E 3\uff09\uff1a\n  - `standard` (\u9ed8\u8ba4) - \u6807\u51c6\u8d28\u91cf\uff0c\u66f4\u5feb\u66f4\u4fbf\u5b9c\n  - `hd` - \u9ad8\u6e05\u8d28\u91cf\uff0c\u66f4\u6162\u66f4\u8d35\n- `style` (\u53ef\u9009) - \u56fe\u7247\u98ce\u683c\uff08\u4ec5 DALL-E 3\uff09\uff1a\n  - `vivid` (\u9ed8\u8ba4) - \u751f\u52a8\u98ce\u683c\uff0c\u8272\u5f69\u9c9c\u8273\n  - `natural` - \u81ea\u7136\u98ce\u683c\uff0c\u66f4\u771f\u5b9e\n- `n` (\u53ef\u9009) - \u751f\u6210\u56fe\u7247\u6570\u91cf\uff1a\n  - DALL-E 3: \u56fa\u5b9a\u4e3a 1\n  - DALL-E 2: 1-10 \u5f20\n- `download_path` (\u53ef\u9009) - \u4e34\u65f6\u6307\u5b9a\u4e0b\u8f7d\u8def\u5f84\n\n#### OpenAI DALL-E \u4f7f\u7528\u793a\u4f8b\n\n##### \ud83c\udfa8 \u57fa\u672c\u56fe\u7247\u751f\u6210\n\n```text\n\u7528\u6237: \u8bf7\u7528OpenAI\u751f\u6210\u4e00\u5f20\u4e2d\u56fd\u5973\u5b69\u7684\u56fe\u7247\n\nClaude: [\u8c03\u7528 generate_image_openai \u5de5\u5177]\n       \u2705 \u56fe\u7247\u751f\u6210\u6210\u529f\uff01\n       \ud83d\udcc1 \u672c\u5730\u8def\u5f84: ~/Pictures/OpenAI_Generated/20250803_131535_dall-e-3_1024x1024_Chinese_girl_abc123.jpg\n\n       [\u81ea\u52a8\u8c03\u7528 view_image \u5de5\u5177\u663e\u793a\u751f\u6210\u7684\u56fe\u7247]\n```\n\n##### \ud83c\udfaf \u6307\u5b9a\u6a21\u578b\u548c\u8d28\u91cf\n\n```text\n\u7528\u6237: \u7528dall-e-3\u9ad8\u6e05\u6a21\u5f0f\u751f\u6210\u4e00\u5f20\u79d1\u5e7b\u57ce\u5e02\u56fe\u7247\n\nClaude: [\u8c03\u7528 generate_image_openai \u5de5\u5177\uff0c\u53c2\u6570\uff1a\n- prompt: \"\u79d1\u5e7b\u57ce\u5e02\"\n- model: \"dall-e-3\"\n- quality: \"hd\"\n- preset_size: \"landscape\"]\n```\n\n##### \ud83d\udcd0 \u4f7f\u7528\u9884\u8bbe\u5c3a\u5bf8\u548c\u98ce\u683c\n\n```text\n\u7528\u6237: \u751f\u6210\u4e00\u5f20\u81ea\u7136\u98ce\u683c\u7684\u6b63\u65b9\u5f62\u56fe\u7247\uff0c\u5185\u5bb9\u662f\u53ef\u7231\u7684\u5c0f\u732b\n\nClaude: [\u8c03\u7528 generate_image_openai \u5de5\u5177\uff0c\u53c2\u6570\uff1a\n- prompt: \"\u53ef\u7231\u7684\u5c0f\u732b\"\n- preset_size: \"square\"\n- style: \"natural\"]\n       \u2705 \u56fe\u7247\u751f\u6210\u6210\u529f\uff01\n       \ud83d\udcc1 \u672c\u5730\u8def\u5f84: ~/Pictures/OpenAI_Generated/20250803_131535_dall-e-3_1024x1024_cute_cat_abc123.jpg\n\n       [\u81ea\u52a8\u8c03\u7528 view_image \u5de5\u5177\u663e\u793a\u751f\u6210\u7684\u56fe\u7247]\n```\n\n#### \u7f51\u7edc\u56fe\u7247\u5206\u6790\n\n```text\n\u7528\u6237: \u8bf7\u5206\u6790\u8fd9\u5f20\u7f51\u7edc\u56fe\u7247 https://img.youtube.com/vi/iv-5mZ_9CPY/maxresdefault.jpg\n\nClaude: [\u8c03\u7528 view_image \u5de5\u5177]\n\n\u8fd4\u56de\u7ed3\u679c:\n\u56fe\u7247\u8be6\u7ec6\u4fe1\u606f:\n\u6587\u4ef6\u540d: URL: https://img.youtube.com/vi/iv-5mZ_9CPY/maxresdefault.jpg\n\u6587\u4ef6\u8def\u5f84: /tmp/tmp9rizrzqv.jpg\n\u6587\u4ef6\u5927\u5c0f: 290,434 \u5b57\u8282 (283.63 KB, 0.28 MB)\n\u56fe\u7247\u683c\u5f0f: JPEG\n\u5206\u8fa8\u7387: 1280 x 720\n\u989c\u8272\u6a21\u5f0f: RGB\n\u603b\u50cf\u7d20\u6570: 921,600\n\n[\u540c\u65f6\u663e\u793a\u56fe\u7247\u5185\u5bb9\u4f9b\u5206\u6790]\n```\n\n## \ud83c\udf10 URL\u56fe\u7247\u652f\u6301\n\n### \u652f\u6301\u7684URL\u7c7b\u578b\n\n- **HTTP/HTTPS\u534f\u8bae**: `http://` \u548c `https://` \u5f00\u5934\u7684URL\n- **\u5404\u79cd\u57df\u540d**: \u652f\u6301\u4efb\u4f55\u53ef\u516c\u5f00\u8bbf\u95ee\u7684\u56fe\u7247URL\n- **\u5e38\u89c1\u56fe\u7247\u7f51\u7ad9**:\n  - YouTube\u7f29\u7565\u56fe: `https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg`\n  - \u793e\u4ea4\u5a92\u4f53\u56fe\u7247: Twitter\u3001Instagram\u3001Facebook\u7b49\n  - \u56fe\u7247\u6258\u7ba1\u670d\u52a1: Imgur\u3001Flickr\u3001Google Photos\u7b49\n  - CDN\u56fe\u7247: \u5404\u79cd\u5185\u5bb9\u5206\u53d1\u7f51\u7edc\u7684\u56fe\u7247\n\n### \u5b89\u5168\u7279\u6027\n\n- **\u534f\u8bae\u9650\u5236**: \u4ec5\u5141\u8bb8HTTP\u548cHTTPS\u534f\u8bae\uff0c\u62d2\u7edd\u5176\u4ed6\u534f\u8bae\n- **Content-Type\u9a8c\u8bc1**: \u786e\u4fddURL\u8fd4\u56de\u7684\u662f\u56fe\u7247\u5185\u5bb9\n- **\u8d85\u65f6\u63a7\u5236**: 30\u79d2\u4e0b\u8f7d\u8d85\u65f6\uff0c\u907f\u514d\u957f\u65f6\u95f4\u7b49\u5f85\n- **\u81ea\u52a8\u91cd\u5b9a\u5411**: \u652f\u6301\u6700\u591a5\u6b21\u91cd\u5b9a\u5411\u8ddf\u8e2a\n- **\u4e34\u65f6\u6587\u4ef6\u7ba1\u7406**: \u4e0b\u8f7d\u7684\u56fe\u7247\u5b58\u50a8\u5728\u7cfb\u7edf\u4e34\u65f6\u76ee\u5f55\uff0c\u5904\u7406\u5b8c\u81ea\u52a8\u6e05\u7406\n\n### \u4f7f\u7528\u6ce8\u610f\u4e8b\u9879\n\n- **\u7f51\u7edc\u8fde\u63a5**: \u9700\u8981\u7a33\u5b9a\u7684\u7f51\u7edc\u8fde\u63a5\u8bbf\u95ee\u5916\u90e8URL\n- **\u8bbf\u95ee\u6743\u9650**: \u67d0\u4e9b\u7f51\u7ad9\u53ef\u80fd\u6709\u9632\u722c\u866b\u673a\u5236\uff0c\u53ef\u80fd\u65e0\u6cd5\u8bbf\u95ee\n- **\u6587\u4ef6\u5927\u5c0f**: URL\u56fe\u7247\u4e0d\u53d7\u672c\u5730\u6587\u4ef6\u5927\u5c0f\u9650\u5236\uff0c\u9075\u5faaMCP\u534f\u8bae\u5904\u7406\n- **\u9690\u79c1\u8003\u8651**: \u8bbf\u95eeURL\u65f6\u4f1a\u66b4\u9732\u60a8\u7684IP\u5730\u5740\u7ed9\u76ee\u6807\u670d\u52a1\u5668\n\n## \u652f\u6301\u7684\u56fe\u7247\u683c\u5f0f\n\n- JPEG (.jpg, .jpeg)\n- PNG (.png)\n- GIF (.gif)\n- BMP (.bmp)\n- WebP (.webp)\n\n### \u56fe\u7247\u5904\u7406\n\n- \u9ed8\u8ba4\u6700\u5927\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u4e3a5MB\n- \u6240\u6709\u975eJPEG\u683c\u5f0f\u7684\u56fe\u7247\u4f1a\u88ab\u8f6c\u6362\u4e3aJPEG\u4ee5\u51cf\u5c0f\u5927\u5c0f\n- \u5bf9\u4e8e\u5305\u542b\u900f\u660e\u901a\u9053\u7684\u56fe\u7247\uff08\u5982PNG\uff09\uff0c\u4f1a\u5728\u8f6c\u6362\u65f6\u6dfb\u52a0\u767d\u8272\u80cc\u666f\n- \u4f7f\u7528\u4f18\u5316\u7684JPEG\u538b\u7f29\u7b97\u6cd5\u51cf\u5c0f\u8f93\u51fa\u6587\u4ef6\u5927\u5c0f\n\n### \u9519\u8bef\u5904\u7406\n\n\u670d\u52a1\u5305\u542b\u5168\u9762\u7684\u9519\u8bef\u5904\u7406\u673a\u5236\uff1a\n\n**\u672c\u5730\u6587\u4ef6\u9519\u8bef:**\n\n- \u56fe\u7247\u8def\u5f84\u9a8c\u8bc1\uff08\u6587\u4ef6\u662f\u5426\u5b58\u5728\uff09\n- \u6587\u4ef6\u5927\u5c0f\u68c0\u67e5\n- \u56fe\u7247\u683c\u5f0f\u9a8c\u8bc1\n- \u6587\u4ef6\u6743\u9650\u68c0\u67e5\n\n**\u7f51\u7edc\u56fe\u7247\u9519\u8bef:**\n\n- URL\u683c\u5f0f\u9a8c\u8bc1\n- \u7f51\u7edc\u8fde\u63a5\u9519\u8bef\uff08\u8d85\u65f6\u3001DNS\u5931\u8d25\u7b49\uff09\n- HTTP\u72b6\u6001\u9519\u8bef\uff08404\u3001403\u3001500\u7b49\uff09\n- Content-Type\u9a8c\u8bc1\uff08\u786e\u4fdd\u662f\u56fe\u7247\u5185\u5bb9\uff09\n- \u4e0b\u8f7d\u5931\u8d25\u5904\u7406\n\n**\u901a\u7528\u9519\u8bef:**\n\n- \u5f02\u5e38\u6355\u83b7\u548c\u53cb\u597d\u9519\u8bef\u6d88\u606f\n- \u4e34\u65f6\u6587\u4ef6\u6e05\u7406\uff08\u5373\u4f7f\u51fa\u9519\u4e5f\u4f1a\u6e05\u7406\uff09\n\n## EXIF\u5143\u6570\u636e\u652f\u6301\n\n\u8be5\u670d\u52a1\u63d0\u4f9b\u5b8c\u6574\u7684EXIF\u5143\u6570\u636e\u63d0\u53d6\u529f\u80fd\uff1a\n\n### \u652f\u6301\u7684EXIF\u4fe1\u606f\u7c7b\u578b\n\n- **\u8bbe\u5907\u4fe1\u606f**: \u76f8\u673a\u54c1\u724c\u3001\u578b\u53f7\u3001\u8f6f\u4ef6\u7248\u672c\n- **\u62cd\u6444\u53c2\u6570**: \u66dd\u5149\u65f6\u95f4\u3001\u5149\u5708\u503c\u3001ISO\u611f\u5149\u5ea6\u3001\u7126\u8ddd\n- **\u62cd\u6444\u65f6\u95f4**: \u62cd\u6444\u65f6\u95f4\u3001\u6570\u5b57\u5316\u65f6\u95f4\u3001\u539f\u59cb\u65f6\u95f4\n- **\u6280\u672f\u53c2\u6570**: \u8272\u5f69\u7a7a\u95f4\u3001\u95ea\u5149\u706f\u8bbe\u7f6e\u3001\u6d4b\u5149\u6a21\u5f0f\u3001\u66dd\u5149\u7a0b\u5e8f\n- **\u56fe\u7247\u5c5e\u6027**: EXIF\u56fe\u7247\u5c3a\u5bf8\u3001\u65b9\u5411\u4fe1\u606f\n- **GPS\u4fe1\u606f**: \u5730\u7406\u4f4d\u7f6e\u6570\u636e\uff08\u5982\u679c\u6709\uff09\n- **\u5176\u4ed6\u5143\u6570\u636e**: \u6240\u6709\u53ef\u7528\u7684EXIF\u6807\u7b7e\n\n### EXIF\u6570\u636e\u5904\u7406\u7279\u6027\n\n- **\u667a\u80fd\u7c7b\u578b\u5904\u7406**: \u81ea\u52a8\u5904\u7406\u5b57\u8282\u6570\u636e\u3001\u5206\u6570\u503c\u3001\u6d6e\u70b9\u6570\u7b49\u4e0d\u540c\u6570\u636e\u7c7b\u578b\n- **\u82f1\u6587\u952e\u540d**: \u4fdd\u6301\u539f\u59cbEXIF\u6807\u7b7e\u540d\uff0c\u4fbf\u4e8eLLM\u7406\u89e3\u4e13\u4e1a\u672f\u8bed\n- **\u4f18\u96c5\u964d\u7ea7**: \u6ca1\u6709EXIF\u6570\u636e\u7684\u56fe\u7247\u4e0d\u4f1a\u663e\u793a\u7a7a\u767d\u90e8\u5206\n- **\u5b8c\u6574\u63d0\u53d6**: \u63d0\u53d6\u6240\u6709\u53ef\u7528\u7684EXIF\u5b57\u6bb5\uff0c\u4e0d\u9884\u8bbe\u9650\u5236\n\n## \u6269\u5c55\u6027\n\n\u8be5\u670d\u52a1\u8bbe\u8ba1\u4e3a\u53ef\u6269\u5c55\u7684\uff0c\u672a\u6765\u53ef\u4ee5\u6dfb\u52a0\u66f4\u591a\u529f\u80fd\uff1a\n\n- **\u66f4\u591a\u56fe\u7247\u683c\u5f0f**: \u652f\u6301RAW\u683c\u5f0f\u3001HEIC\u7b49\n- **\u56fe\u7247\u9884\u5904\u7406**: \u88c1\u526a\u3001\u7f29\u653e\u3001\u65cb\u8f6c\u7b49\u64cd\u4f5c\n- **\u9ad8\u7ea7\u5206\u6790**: \u989c\u8272\u5206\u5e03\u3001\u76f4\u65b9\u56fe\u3001\u5bf9\u8c61\u68c0\u6d4b\n- **\u6279\u91cf\u5904\u7406**: \u540c\u65f6\u5904\u7406\u591a\u4e2a\u56fe\u7247\u6587\u4ef6\u6216URL\n- **AI\u589e\u5f3a**: \u56fe\u7247\u8d28\u91cf\u8bc4\u4f30\u3001\u573a\u666f\u8bc6\u522b\u7b49\n- **\u7f13\u5b58\u673a\u5236**: URL\u56fe\u7247\u667a\u80fd\u7f13\u5b58\uff0c\u63d0\u9ad8\u91cd\u590d\u8bbf\u95ee\u6027\u80fd\n- **\u4ee3\u7406\u652f\u6301**: \u652f\u6301HTTP\u4ee3\u7406\u8bbf\u95ee\u53d7\u9650\u7f51\u7edc\u4e2d\u7684\u56fe\u7247\n- **\u8ba4\u8bc1\u652f\u6301**: \u652f\u6301\u9700\u8981\u8ba4\u8bc1\u7684\u79c1\u6709\u56fe\u7247URL\n\n## \u6ce8\u610f\u4e8b\u9879\n\n### \u6587\u4ef6\u8def\u5f84\n\n- \u56fe\u7247\u8def\u5f84\u5fc5\u987b\u662f\u5b8c\u6574\u7684\u7edd\u5bf9\u8def\u5f84\n- \u652f\u6301\u8de8\u5e73\u53f0\u8def\u5f84\u683c\u5f0f\uff08Windows\u3001macOS\u3001Linux\uff09\n\n### \u9690\u79c1\u4e0e\u5b89\u5168\n\n- \u670d\u52a1\u4e0d\u4f1a\u4fee\u6539\u539f\u59cb\u56fe\u7247\u6587\u4ef6\n- \u56fe\u7247\u6570\u636e\u4e0d\u4f1a\u88ab\u6c38\u4e45\u5b58\u50a8\uff0c\u4ec5\u5728\u5904\u7406\u8fc7\u7a0b\u4e2d\u4e34\u65f6\u4f7f\u7528\n- EXIF\u6570\u636e\u53ef\u80fd\u5305\u542b\u654f\u611f\u4fe1\u606f\uff08\u5982GPS\u4f4d\u7f6e\uff09\uff0c\u8bf7\u6ce8\u610f\u9690\u79c1\u4fdd\u62a4\n\n### \u6027\u80fd\u8003\u8651\n\n- \u9ed8\u8ba4\u6700\u5927\u6587\u4ef6\u5927\u5c0f\u9650\u5236\u4e3a5MB\uff0c\u53ef\u901a\u8fc7\u53c2\u6570\u8c03\u6574\n- \u5927\u578b\u56fe\u7247\u4f1a\u81ea\u52a8\u8fdb\u884c\u8d28\u91cf\u4f18\u5316\u4ee5\u51cf\u5c0f\u4f20\u8f93\u5927\u5c0f\n- EXIF\u63d0\u53d6\u5bf9\u6027\u80fd\u5f71\u54cd\u5f88\u5c0f\uff0c\u9002\u5408\u5b9e\u65f6\u4f7f\u7528\n\n### \u517c\u5bb9\u6027\n\n- \u652f\u6301\u6240\u6709\u4e3b\u6d41\u56fe\u7247\u683c\u5f0f\u7684EXIF\u6570\u636e\n- \u67d0\u4e9b\u683c\u5f0f\uff08\u5982PNG\u3001GIF\uff09\u53ef\u80fd\u4e0d\u5305\u542bEXIF\u4fe1\u606f\n- AI\u751f\u6210\u7684\u56fe\u7247\u901a\u5e38\u4e0d\u5305\u542b\u4f20\u7edf\u7684\u62cd\u6444\u53c2\u6570EXIF\u6570\u636e\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "MCP\u670d\u52a1\uff1a\u5c06\u672c\u5730\u56fe\u7247\u548c\u7f51\u7edc\u56fe\u7247\u53d1\u9001\u7ed9LLM",
    "version": "5.2.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a010d4a04aa47c02b0f0cd0dc4376c64dc5193a305365cda4228f388b1c4dcdd",
                "md5": "ed1bc8a95e6403c264a6a1dd339c4ecb",
                "sha256": "7fc404cb1ef13adaed63d16d70445b7a008d2f338d6eb08d850e9126cbf807f4"
            },
            "downloads": -1,
            "filename": "mcp_imgutils-5.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ed1bc8a95e6403c264a6a1dd339c4ecb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 82930,
            "upload_time": "2025-08-10T18:41:03",
            "upload_time_iso_8601": "2025-08-10T18:41:03.319338Z",
            "url": "https://files.pythonhosted.org/packages/a0/10/d4a04aa47c02b0f0cd0dc4376c64dc5193a305365cda4228f388b1c4dcdd/mcp_imgutils-5.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "80afb2caea3a10363d2c5499377b11b6351599f7a5edf0e5149a61d87a583768",
                "md5": "f3e154e6b1ed191d8e4bcbee59352bc8",
                "sha256": "bc64ac4c68d8022819f154b380bcd2f548cc9c6d7128efb890acf1e1915470b6"
            },
            "downloads": -1,
            "filename": "mcp_imgutils-5.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "f3e154e6b1ed191d8e4bcbee59352bc8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 104482,
            "upload_time": "2025-08-10T18:41:04",
            "upload_time_iso_8601": "2025-08-10T18:41:04.787816Z",
            "url": "https://files.pythonhosted.org/packages/80/af/b2caea3a10363d2c5499377b11b6351599f7a5edf0e5149a61d87a583768/mcp_imgutils-5.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-10 18:41:04",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "mcp-imgutils"
}
        
Elapsed time: 1.00264s