notice妙言小智免费图片翻译权益公告:自 2026 年 5 月 20 日起,妙言小智免费用户每日图片翻译额度调整为 30 张,会员用户权益不受影响。查看详情

图片智能缩放 (Resize)

调整图片尺寸,支持按比例缩放、按固定宽高缩放或等比适应。使用 Lanczos 高质量插值算法。
POSThttps://******/tools/resize消耗: 1 积分 / 10次
同步接口,处理完成后直接返回 JSON。
请求参数
名称类型必填描述
AccountIdstring账号ID。
Timestampstring当前时间戳(毫秒级,CST/UTC+8时区)。
Imagestring图片 URL 或 Base64 字符串。
Scalefloat缩放比例 (0.0 - 10.0)。例如 0.5 为缩小一半,2.0 为放大两倍。若设置此参数,优先使用。
Widthint目标宽度 (px)。
Heightint目标高度 (px)。
Modestring缩放模式,默认 "lfit"。可选值:(1) lfit: 等比缩放,限制在矩形内;(2) mfit: 等比缩放,延伸填充;(3) fixed: 强制拉伸。
OutputFormatstring输出格式,默认 JPEG。支持 PNG, WEBP。
Signaturestring请求签名。
返回示例
{
    "Code": 200,
    "Message": "Success",
    "RequestId": "uuid-...",
    "Data": {
        "Base64": "data:image/jpeg;base64,/9j/4AAQSk...",
        "Width": 800,
        "Height": 600
    }
}
Java 调用示例
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;

public class ResizeDemo {
    private static final String API_URL = "https://******/tools/resize";
    private static final String ACCOUNT_ID = "pic_YOUR_ID";
    private static final String SECRET_KEY = "YOUR_SECRET_KEY";

    public static void main(String[] args) throws Exception {
        Map<String, Object> params = new TreeMap<>();
        params.put("AccountId", ACCOUNT_ID);
        params.put("Image", "https://example.com/test.jpg");
        params.put("Width", 800);
        params.put("Mode", "lfit");

        // 毫秒级时间戳
        params.put("Timestamp", String.valueOf(System.currentTimeMillis()));

        String signature = generateSignature(params, SECRET_KEY);
        params.put("Signature", signature);

        String jsonBody = buildJson(params);

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(API_URL))
                .header("Content-Type", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(jsonBody))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }

    private static String generateSignature(Map<String, Object> params, String secret) throws Exception {
        String strToSign = params.entrySet().stream()
                .filter(e -> e.getValue() != null && !e.getValue().toString().isEmpty())
                .map(e -> e.getKey() + "=" + e.getValue())
                .collect(Collectors.joining("&")) + "&SecretKey=" + secret;

        Mac hmacSha256 = Mac.getInstance("HmacSHA256");
        hmacSha256.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
        return Base64.getEncoder().encodeToString(hmacSha256.doFinal(strToSign.getBytes(StandardCharsets.UTF_8)));
    }

    private static String buildJson(Map<String, Object> params) {
        StringBuilder sb = new StringBuilder("{");
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            sb.append(""").append(entry.getKey()).append("":");
            if (entry.getValue() instanceof Number) {
                sb.append(entry.getValue());
            } else {
                sb.append(""").append(entry.getValue().toString().replace(""", "\"")).append(""");
            }
            sb.append(",");
        }
        if (sb.length() > 1) sb.deleteCharAt(sb.length() - 1);
        sb.append("}");
        return sb.toString();
    }
}
图片智能缩放 (Resize) - 图片基础处理 (工具箱) API文档