模型定价

模型名称 定价元/张
doubao-seedream-4.0 0.2
doubao-seedream-3.0-t2i 0.259
doubao-seededit-3.0-i2i 0.3

豆包图像识别

import os
import sys
import subprocess

# ===== 安装依赖 =====
def install(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", package])

install("openai>=1.0")

from openai import OpenAI

# 初始化 Ark 客户端(建议方式:从环境变量读取)
client = OpenAI(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    api_key="xxxx",
)

# 调用模型
response = client.chat.completions.create(
    model="doubao-1-5-vision-pro-32k-250115",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://ark-project.tos-cn-beijing.ivolces.com/images/view.jpeg"
                    },
                },
                {"type": "text", "text": "这是哪里?"},
            ],
        }
    ],
)

print(response.choices[0].message)

豆包图像修改

import os
import sys
import subprocess

# ===== 自动安装依赖 =====
def install(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", package])

install("volcengine-python-sdk[ark]")

# ===== 导入 SDK =====
from volcenginesdkarkruntime import Ark

# 初始化 Ark 客户端
client = Ark(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    api_key="xxxx",
)

# 调用图片生成接口
imagesResponse = client.images.generate(
    model="doubao-seededit-3-0-i2i-250628",
    prompt="改成爱心形状的泡泡",
    image="https://ark-project.tos-cn-beijing.volces.com/doc_image/seededit_i2i.jpeg",
    seed=123,
    guidance_scale=5.5,
    size="adaptive",
    watermark=True
)

# 打印返回图片地址
print(imagesResponse.data[0].url)

豆包改图下载本地

import os
import sys
import subprocess
import requests

# ===== 自动安装依赖 =====
def install(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", package])

try:
    from volcenginesdkarkruntime import Ark
except ImportError:
    install("volcengine-python-sdk[ark]")
    from volcenginesdkarkruntime import Ark

# ===== 初始化 Ark 客户端 =====
client = Ark(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    api_key="xxx",  # 建议改成 os.getenv("ARK_API_KEY")
)

# ===== 配置 =====
TXT_FILE = r"c:\prompts.txt"   # 提示词文件
SAVE_DIR = r"C:\doubao\i2i"   # 下载保存目录
os.makedirs(SAVE_DIR, exist_ok=True)

# ===== 读取提示词文件并逐行调用 =====
with open(TXT_FILE, "r", encoding="utf-8") as f:
    prompts = [line.strip() for line in f if line.strip()]

for idx, prompt in enumerate(prompts, start=1):
    try:
        imagesResponse = client.images.generate(
            model="doubao-seededit-3-0-i2i-250628",
            prompt=prompt,  # 每行作为提示词
            image="https://ark-project.tos-cn-beijing.volces.com/doc_image/seededit_i2i.jpeg",
            seed=123,
            guidance_scale=5.5,
            size="adaptive",
            watermark=True
        )
        url = imagesResponse.data[0].url
        print(f"[{idx}] 提示词: {prompt} -> 图片地址: {url}")

        # ===== 下载图片 =====
        resp = requests.get(url, timeout=60)
        if resp.status_code == 200:
            # 文件名:序号_前10个字符提示词.jpg
            safe_prompt = "".join(c for c in prompt if c.isalnum())[:10]
            filename = os.path.join(SAVE_DIR, f"{idx:03d}_{safe_prompt}.jpg")
            with open(filename, "wb") as f:
                f.write(resp.content)
            print(f"    已保存到: {filename}")
        else:
            print(f"    下载失败: HTTP {resp.status_code}")

    except Exception as e:
        print(f"[{idx}] 提示词: {prompt} -> 生成失败: {e}")

本地图片批量修改

import os
import sys
import subprocess
import base64
import mimetypes
import requests
import re
from time import sleep

# ===== 自动安装依赖 =====
def install(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", package])

try:
    from volcenginesdkarkruntime import Ark
except ImportError:
    install("volcengine-python-sdk[ark]")
    from volcenginesdkarkruntime import Ark

# ===== 工具函数 =====
def to_data_url(img_path: str) -> str:
    """把本地图片转成 data URL: data:image/xxx;base64,xxxx"""
    with open(img_path, "rb") as f:
        b64 = base64.b64encode(f.read()).decode("utf-8")
    mime, _ = mimetypes.guess_type(img_path)
    if not mime:
        mime = "image/jpeg"
    return f"data:{mime};base64,{b64}"

def download(url: str, out_path: str, timeout: int = 60, retry: int = 3) -> bool:
    for i in range(1, retry + 1):
        try:
            r = requests.get(url, timeout=timeout)
            if r.status_code == 200:
                with open(out_path, "wb") as f:
                    f.write(r.content)
                return True
            else:
                print(f"    [下载] HTTP {r.status_code}({i}/{retry})")
        except Exception as e:
            print(f"    [下载] 异常:{e}({i}/{retry})")
        sleep(1)
    return False

def natural_key(s: str):
    """自然排序 key,确保 2.jpg < 10.jpg"""
    return [int(text) if text.isdigit() else text.lower()
            for text in re.split(r'(\d+)', s)]

# ===== 初始化 Ark 客户端 =====
client = Ark(
    base_url="https://ark.cn-beijing.volces.com/api/v3",
    api_key=os.getenv("ARK_API_KEY", "xxx"),  # 推荐改用环境变量
)

# ===== 路径配置 =====
IMG_DIR  = r"C:\doubao\188"     # 输入原图目录
SAVE_DIR = r"C:\doubao\i2i"    # 输出目录
TXT_FILE = r"C:\prompts.txt"   # 提示词文件
os.makedirs(SAVE_DIR, exist_ok=True)

# ===== 读取提示词 =====
with open(TXT_FILE, "r", encoding="utf-8") as f:
    prompts = [line.strip() for line in f if line.strip()]
if not prompts:
    raise RuntimeError("prompts.txt 为空:请至少提供一行提示词。")

# ===== 收集并自然排序图片 =====
images = [fn for fn in os.listdir(IMG_DIR) if fn.lower().endswith((".jpg", ".jpeg", ".png", ".webp", ".bmp"))]
images.sort(key=natural_key)
if not images:
    raise RuntimeError(f"在目录中未找到图片:{IMG_DIR}")

# 提示词策略
if len(prompts) == 1:
    def pick_prompt(_idx): return prompts[0]
elif len(prompts) == len(images):
    def pick_prompt(idx): return prompts[idx]
else:
    print(f"[警告] 图片数({len(images)}) 与提示词行数({len(prompts)})不匹配,将对所有图片使用第一行提示词。")
    def pick_prompt(_idx): return prompts[0]

# ===== 逐张处理 =====
ok_count = 0
for i, img_name in enumerate(images):
    src = os.path.join(IMG_DIR, img_name)
    name, _ = os.path.splitext(img_name)
    dst = os.path.join(SAVE_DIR, f"{name}-i2i.jpg")
    prompt = pick_prompt(i)

    try:
        image_data_url = to_data_url(src)

        resp = client.images.generate(
            model="doubao-seededit-3-0-i2i-250628",
            prompt=prompt,
            image=image_data_url,   # data URL
            seed=123,
            guidance_scale=5.5,
            size="adaptive",
            watermark=True,
        )

        out_url = resp.data[0].url
        print(f"[{i+1}] {img_name} | 提示词: {prompt} -> {out_url}")

        if download(out_url, dst):
            print(f"    已保存: {dst}")
            ok_count += 1
        else:
            print(f"    [失败] 下载未成功: {dst}")

    except Exception as e:
        print(f"[{i+1}] {img_name} -> 生成失败: {e}")

print(f"\n完成:成功生成并保存 {ok_count}/{len(images)} 张,输出目录:{SAVE_DIR}")
❤️ 转载文章请注明出处,谢谢!❤️