1.接口说明
图片无损放大 API:基于深度学习超分辨率技术,对图片进行2倍无损放大,保持图片清晰度和细节。
1.1主要功能
- 2倍无损放大:
- 固定2倍放大倍数,保持图片清晰度和细节。
- 支持多种输入:
- 支持 Base64 编码或图片 URL 输入。
- 保持通道数:
- 返回图片通道数和输入图片相同,四通道返回PNG,其他返回JPG。
- 高质量输出:
- 基于深度学习技术,保持图片清晰度和细节。
1.2接入场景
图片放大、素材增强、低分辨率图片修复、电商图片处理等。
2.请求信息
2.1请求地址(URL)
POST https://api.shiliuai.com/api/image_upscale/v1
2.2请求方式
POST
2.3请求头(header)
| 参数 | 类型 | 说明 |
|---|---|---|
| Content-Type | string | application/json |
| APIKEY | string | 您的 API KEY |
2.4请求体(body)
| 参数 | 是否必填 | 类型 | 说明 |
|---|---|---|---|
| image_base64 | 必须填写其中之一 | string | base64编码的图片文件,图片可以是单通道,三通道或四通道, 图片文件要小于20M,图片的长边必须小于2048像素 |
| image_url | string | 图片的url,图片可以是单通道,三通道或四通道, 图片文件要小于20M,图片的长边必须小于2048像素 | |
| scale_factor | 否 | int | 放大倍数,默认为2,固定为2倍放大 |
3.返回信息
3.1返回类型
JSON
3.2返回信息
| 参数 | 说明 |
|---|---|
| code | 错误码 |
| msg | 错误信息(英文) |
| msg_cn | 错误信息(中文) |
| result_base64 | 放大后图片的base64编码,(当code==0时会有该返回值), 如果输入图片是四通道,那么返回四通道png格式图片,否则返回jpg格式图片, 返回图片通道数和输入图片相同 |
3.3返回示例
{
"code": 0,
"msg": "OK",
"msg_cn": "成功",
"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 cv2
import json
import numpy as np
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_upscale/v1'
headers = {'APIKEY': api_key, "Content-Type": "application/json"}
data = {
"image_base64": photo_base64,
"scale_factor": 2 # 固定为2倍放大
}
response = requests.post(url=url, headers=headers, json=data)
response = json.loads(response.content)
"""
成功:{'code': 0, 'msg': 'OK', 'msg_cn': '成功', 'result_base64': result_base64}
or
失败:{'code': error_code, 'msg': error_msg, 'msg_cn': 错误信息}
"""
result_base64 = response['result_base64']
file_bytes = base64.b64decode(result_base64)
f = open('result.jpg', 'wb')
f.write(file_bytes)
f.close()
image = np.asarray(bytearray(file_bytes), dtype=np.uint8)
image = cv2.imdecode(image, cv2.IMREAD_UNCHANGED)
cv2.imshow('result', image)
cv2.waitKey(0)
4.2 PHP
<?php $url = "https://api.shiliuai.com/api/image_upscale/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, "scale_factor"=> 2 // 固定为2倍放大 ); $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 JavaScript
const fs = require('fs');
const apiKey = '******';
const filePath = '...';
const apiUrl = 'https://api.shiliuai.com/api/image_upscale/v1';
async function main() {
const imageBase64 = fs.readFileSync(filePath).toString('base64');
const res = await fetch(apiUrl, {
method: 'POST',
headers: {
APIKEY: apiKey,
'Content-Type': 'application/json'
},
body: JSON.stringify({ image_base64: imageBase64, scale_factor: 2 })
});
const data = await res.json();
if (data.code === 0) {
fs.writeFileSync('result.jpg', Buffer.from(data.result_base64, 'base64'));
console.log('图像无损放大成功,已保存 result.jpg');
} else {
console.error('请求失败:', data.msg_cn || data.msg);
}
}
main().catch(console.error);
4.4 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 = "..."; // 图片路径
int scaleFactor = 2; // 固定为2倍放大
string url = "https://api.shiliuai.com/api/image_upscale/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,
scale_factor = scaleFactor
};
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}");
}
}
}
}
4.5 易语言
版本 2
.支持库 spec
.支持库 dp1
.子程序 图片放大_API_示例
.局部变量 局_网址, 文本型
.局部变量 局_方式, 整数型
.局部变量 局_提交数据, 文本型
.局部变量 局_提交协议头, 文本型
.局部变量 局_结果, 字节集
.局部变量 局_返回, 文本型
.局部变量 图片数据, 字节集
.局部变量 base64图片, 文本型
图片数据 = 读入文件 ("你的图片路径.jpg")
base64图片 = 编码_BASE64编码 (图片数据)
局_提交数据 = "{" + #引号 + "image_base64" + #引号 + ":" + #引号 + base64图片 + #引号 + "," + #引号 + "scale_factor" + #引号 + ":2}"
局_网址 = "https://api.shiliuai.com/api/image_upscale/v1"
局_方式 = 1
局_提交协议头 = "APIKEY: 你的APIKEY" + #换行符 + "Content-Type: application/json"
局_结果 = 网页_访问_对象 (局_网址, 局_方式, 局_提交数据, , , 局_提交协议头, , , , , , , , , , , , , )
局_返回 = 到文本 (编码_编码转换对象 (局_结果, , , ))
返回 (局_返回)
4.6 天诺
public static string Api_Image64Scale(Image image, string apiKey)
{
string url = "https://api.shiliuai.com/api/image_upscale/v1";
var headers = new Dictionary
{
{"Authorization", "APPCODE " + appcode},
{"Content-Type", "application/json"}
};
string body = "{\"image_base64\":\"" + CustomHelp.ImageTobase64(image) + "\",\"scale_factor\":2}";
return CustomHelp.HttpPost(url, body, headers);
}
4.7 按键精灵-电脑版
Import "Encrypt.dll"
VBSBegin
Function Base64Encode(filePath)
Set inStream = CreateObject("ADODB.Stream")
inStream.Type = 1
inStream.Open
inStream.LoadFromFile filePath
inStream.Position = 0
Set dom = CreateObject("MSXML2.DOMDocument")
Set elem = dom.createElement("tmp")
elem.dataType = "bin.base64"
elem.nodeTypedValue = inStream.Read
Base64Encode = elem.Text
inStream.Close
End Function
Function api_image64_scale(apiKey, imgPath)
url = "https://api.shiliuai.com/api/image_upscale/v1"
jsonBody = "{""image_base64"":""" & Base64Encode(imgPath) & """,""scale_factor"":2}"
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", url, False
http.setRequestHeader "APIKEY", apiKey
http.setRequestHeader "Content-Type", "application/json"
http.send jsonBody
api_image64_scale = http.responseText
End Function
VBSEnd
apiKey = "你的APIKEY"
res = api_image64_scale(apiKey, "你的图片路径.jpg")
TracePrint res
4.8 按键精灵-手机版
Import "yd.luae"
Import "zm.luae"
Dim imagePath = "/sdcard/Pictures/test.png"
SnapShotEx imagePath
Function api_image64_scale(apiKey, imagePath)
Dim url = "https://api.shiliuai.com/api/image_upscale/v1"
Dim body = "{""image_base64"":""" & yd.Base64EncodeFile(imagePath) & """,""scale_factor"":2}"
Dim headers = {null}
headers["APIKEY"] = apiKey
headers["Content-Type"] = "application/json"
Dim res = yd.HttpPost(url, body, headers)
api_image64_scale = yd.JsonDecode(res)
End Function
Dim apiKey = "你的APIKEY"
Dim res = api_image64_scale(apiKey, imagePath)
TracePrint res["code"]
4.9 触动精灵
require("tsnet")
require "TSLib"
local ts = require("ts")
local json = ts.json
function readFileBase64(path)
local f = io.open(path,"rb")
if not f then return nil end
local bytes = f:read("*all")
f:close()
return bytes:base64_encode()
end
function api_image64_scale(apiKey, imagePath)
local url = "https://api.shiliuai.com/api/image_upscale/v1"
local body = json.encode({ image_base64 = readFileBase64(imagePath), scale_factor = 2 })
local headers = {}
headers["APIKEY"] = apiKey
headers["Content-Type"] = "application/json"
local resp = httpPost(url, body, { headers = headers })
return json.decode(resp)
end
4.10 懒人精灵
function api_image64_scale(apiKey, imagePath)
local url = "https://api.shiliuai.com/api/image_upscale/v1"
local body = jsonLib.encode({ image_base64 = getFileBase64(imagePath), scale_factor = 2 })
local headers = {}
headers["APIKEY"] = apiKey
headers["Content-Type"] = "application/json"
local resp = httpPost(url, body, { headers = headers })
return jsonLib.decode(resp)
end
4.11 EasyClick
function main()
local request = image.requestScreenCapture(10000, 0)
if not request then
request = image.requestScreenCapture(10000, 0)
end
local apiKey = "你的APIKEY"
local img = image.captureFullScreenEx()
console.time("t")
local res = api_image64_scale(apiKey, img)
logd(console.timeEnd("t"))
logd(res.code)
end
function api_image64_scale(apiKey, img)
local url = "https://api.shiliuai.com/api/image_upscale/v1"
local imgBase64 = image.toBase64Format(img, "jpg", 100)
image.recycle(img)
local body = JSON.stringify({ image_base64 = imgBase64, scale_factor = 2 })
local params = {
url = url,
method = "POST",
headers = {
["APIKEY"] = apiKey,
["Content-Type"] = "application/json"
},
requestBody = body
}
local res = http.request(params)
return JSON.parse(res.body)
end