1.接口说明
图片转化 / 压缩 API:输入 Base64 图片或已有图片 ID,按需完成格式转换、DPI/宽高调整与压缩,返回结果 Base64(并返回新的 image_id)。
1.1主要功能
- 图片格式转换:
- 支持生成 JPEG / PNG / BMP。
- 分辨率与尺寸调整:
- 支持 DPI 调整,支持按像素设置宽度/高度。
- 质量压缩与大小约束:
- 支持 quality(1~100);当 quality 为空时,可使用 minFileSize/maxFileSize(单位:字节)进行目标大小约束压缩。
- 适配批量链路:
- 支持传 image_id,便于与其它接口串联与复用上传资源。
1.2接入场景
网站图片优化(体积更小/加载更快)、内容生产与素材管理、电商主图处理、移动端图片上传压缩、批量格式规范化等。
2.请求信息
2.1请求地址(URL)
POST https://api.shiliuai.com/api/image_convert/v1
2.2请求方式
POST
2.3请求头(header)
| 参数 | 类型 | 说明 |
|---|---|---|
| Content-Type | string | application/json |
| APIKEY | string | 您的 API KEY |
2.4请求体(body)
| 参数 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
| image_base64 | 必须填写其中之一 | string | base64 编码的图片文件,image_base64 和 image_id 必须提供一个 |
| image_id | string | 图片 id | |
| dpi | 否 | int | [10, 1000],生成图片分辨率,默认不改变 |
| width | 否 | int | 生成图片宽度(像素),默认不改变 |
| height | 否 | int | 生成图片高度(像素),默认不改变 |
| quality | 否 | int | [1, 100],生成图片质量,默认为 92 |
| minFileSize | 否 | int | 生成图片最小文件大小(字节),仅当 quality 为空时生效;如 10240 表示 ≥10KB |
| maxFileSize | 否 | int | 生成图片最大文件大小(字节),仅当 quality 为空时生效 |
| format | 否 | string | 生成图片格式:"JPEG" / "PNG" / "BMP" |
3.返回信息
3.1返回类型
JSON
3.2返回字段
| 参数 | 说明 |
|---|---|
| code | 错误码 |
| msg | 错误信息(英文) |
| msg_cn | 错误信息(中文) |
| result_base64 | 转换/压缩后的图片 base64(当 code==0 时返回) |
| image_id | 图片 id(当 code==0 时返回) |
3.3返回示例
{
"code": 0,
"msg": "OK",
"msg_cn": "成功",
"image_id": "xxxxxx",
"result_base64": "iVBORw0KGgoAAAANSUhEUgAA..."
}
3.4错误码
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 图片错误 |
| 2 | 处理错误 |
| 3 | 服务器繁忙 |
| 4 | 参数错误(具体错误看 msg 或 msg_cn) |
| 5 | 未知错误 |
| 101 | API-KEY 不正确 |
| 102 | 未知用户 |
| 103 | 积分已用完 |
| 104 | 扣除积分失败 |
4.示例代码
4.1 Python
# -*- coding: utf-8 -*-
import requests
import base64
import json
api_key = '******' # 你的 API KEY
file_path = '...' # 图片路径
with open(file_path, 'rb') as fp:
photo_base64 = base64.b64encode(fp.read()).decode('utf8')
url = 'https://api.shiliuai.com/api/image_convert/v1'
headers = {'APIKEY': api_key, "Content-Type": "application/json"}
data = {
"image_base64": photo_base64,
"dpi": 300
}
response = requests.post(url=url, headers=headers, json=data)
response = json.loads(response.content)
"""
成功:{'code': 0, 'msg': 'OK', 'msg_cn': '成功', 'image_id': image_id, 'result_base64': result_base64}
失败:{'code': error_code, 'msg': error_msg, 'msg_cn': 错误信息}
"""
result_base64 = response['result_base64']
file_bytes = base64.b64decode(result_base64)
with open('result.jpg', 'wb') as f:
f.write(file_bytes)
4.2 PHP
<?php
$url = "https://api.shiliuai.com/api/image_convert/v1";
$method = "POST";
$apikey = "******";
$header = array();
array_push($header, "APIKEY:" . $apikey);
array_push($header, "Content-Type:application/json");
$file_path = "...";
$handle = fopen($file_path, "r");
$photo = fread($handle, filesize($file_path));
fclose($handle);
$photo_base64 = base64_encode($photo);
$data = array(
"image_base64" => $photo_base64,
"dpi" => 300
);
$post_data = json_encode($data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($curl);
var_dump($response); ?>
4.3 C#
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
string apiKey = "******"; // 你的API KEY
string filePath = "..."; // 图片路径
string url = "https://api.shiliuai.com/api/image_convert/v1";
// 将图片编码为Base64
string photoBase64;
using (var imageStream = File.OpenRead(filePath))
{
byte[] imageBytes = new byte[imageStream.Length];
await imageStream.ReadAsync(imageBytes, 0, (int)imageStream.Length);
photoBase64 = Convert.ToBase64String(imageBytes);
}
// 构造请求数据
var requestData = new
{
image_base64 = photoBase64,
dpi = 300
};
string jsonData = JsonSerializer.Serialize(requestData);
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("APIKEY", apiKey);
client.DefaultRequestHeaders.Add("Content-Type", "application/json");
try
{
// 发送POST请求
var response = await client.PostAsync(url, new StringContent(jsonData, Encoding.UTF8, "application/json"));
string responseString = await response.Content.ReadAsStringAsync();
// 解析响应
var responseObject = JsonSerializer.Deserialize<JsonElement>(responseString);
int code = responseObject.GetProperty("code").GetInt32();
if (code == 0)
{
string resultBase64 = responseObject.GetProperty("result_base64").GetString();
// 将Base64转换为图片并保存
byte[] fileBytes = Convert.FromBase64String(resultBase64);
File.WriteAllBytes("result.jpg", fileBytes);
Console.WriteLine("Image processing succeeded, saved as result.jpg");
}
else
{
string errorMsg = responseObject.GetProperty("msg_cn").GetString();
Console.WriteLine($"Error: {errorMsg}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
}
}
}