添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Java应用之图片美化增强AI接口调用手册

lanhy
发布于 2020-9-1 11:17
浏览
0收藏

在调合合AI平台提供的图片美化增强API接口,API平台链接:https://ai.ccint.com/doc/api/crop_enhance_image, 因为有遇到一些问题,写篇博客记录一下

API文档提供的说明: url中参数app_key为个人中心实例的app_key

请求方式: POST

返回类型: JSON

POST BODY请求字段描述

image_data 必填,图像的base64串 app_secret 必填,个人中心实例的app_secret scan-m 扫描模式, 建议为 1 detail 锐化程度,建议为-1 contrast 对比度 ,建议为 0 bright 增亮 ,建议为 0 enhanceMode 增强模式,1:增亮,2:增强并锐化,3:黑白,4:灰度 "image_data": "", // 必填,图像的base64串 "app_secret": "" // 必填,个人中心实例的app_secret "scan-m": 1, //扫描模式, 建议为 1 "detail": -1, //锐化程度,建议为-1 "contrast": 0, //对比度 ,建议为 0 "bright": 0, //增亮 ,建议为 0 "enhanceMode": 0 //增强模式,1:增亮,2:增强并锐化,3:黑白,4:灰度

{
"code": 200,
"message": "success",
"result": “图片base64信息”
}

失败返回示例


{
"code":30301,
"message":"额度已用完,请充值后使用"
}

返回码说明 Java应用之图片美化增强AI接口调用手册-开源基础软件社区

API文档提供的实例代码:

import sun.misc.BASE64Encoder;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://ocr-api.ccint.com/ocr_service?app_key=%s";
        String appKey = "xxxxxx"; // your app_key
      String appSecret = "xxxxxx"; // your app_secret
      url = String.format(url, appKey);
        OutputStreamWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            String imgData = imageToBase64("example.jpg");
            String param="{\"app_secret\":\"%s\",\"image_data\":\"%s\"}";
            param=String.format(param,appSecret,imgData);
            URL realUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestMethod("POST"); // 设置请求方式
            conn.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的
            conn.connect();
            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
            out.append(param);
            out.flush();
            out.close();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
        } catch (Exception e) {
            System.out.println("发送 POST 请求出现异常!" + e);
            e.printStackTrace();
        finally {
            try {
                if (out != null) {
                    out.close();
                if (in != null) {
                    in.close();
            } catch (IOException ex) {
                ex.printStackTrace();
        System.out.println(result);
    public static String imageToBase64(String path)
        String imgFile = path;
        InputStream in = null;
        byte[] data = null;
            in = new FileInputStream(imgFile);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        catch (IOException e)
            e.printStackTrace();
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);

注意要点:

写文件流时记得outputstream要flush,才能拿到数据
接口返回的json格式的数据,同时带有base64的字符串,所以需要json解析一下,然后调工具类,将base64字符串转换为文件,保存在本地,下面给出调用的代码,仅供参考

* 图片切边增强接口调用 * @author nicky.ma * @date 2019年5月20日下午3:44:27 * @param scanM 扫描模式, 建议为 1 * @param bright 增亮 ,建议为 0 * @param contrast 对比度 ,建议为 0 * @param detail 锐化程度,建议为-1 * @param sourcePath * @param destPath * detail=0&contrast=0&bright=50 增到最亮 * @return public static void ccintCropEnhanceHttpService(final int scanM,final int bright,final int contrast, final int detail,final int enhanceMode,String sourcePath,String destPath) throws Exception{ logger.info("sourcePath:{}"+sourcePath); logger.info("destPath:{}"+destPath); //base64转换 final String imgData = imageToBase64(sourcePath); Map<String,Object> paramsMap=new HashMap<String,Object>(){ private static final long serialVersionUID=1L; put("image_data",imgData); put("app_secret",CCINT_APP_SECRET); put("scan-m",scanM); put("detail",detail); put("contrast",contrast); put("bright",bright); put("enhanceMode",enhanceMode); String param = JSON.toJSONString(paramsMap); // String param="{\"app_secret\":\"%s\",\"image_data\":\"%s\",\"scan-m\":\"%s\",\"detail\":\"%s\",\"contrast\":\"%s\",\"bright\":\"%s\",\"enhanceMode\":\"%s\"}"; // param=String.format(param,CCINT_APP_SECRET,imgData,scanM,detail,contrast,bright,enhanceMode); String url = CCINT_CROP_ENHANCE_URL+"?app_key="+CCINT_APP_KEY; OutputStreamWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection(); conn.setConnectTimeout(20*1000); conn.setReadTimeout(20*1000); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod("POST"); // 设置请求方式 //conn.setRequestProperty("transfer-encoding","chunked"); conn.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的 conn.connect(); out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); out.append(param); //要记得flush,才能拿到数据 out.flush(); out.close(); in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; logger.info("返回Result:{}"+result); int code=conn.getResponseCode(); if(code==200){ JSONObject obj = JSON.parseObject(result); // copyFileByInputStream(conn.getInputStream(),destPath); FileBase64Util.decoderBase64File(obj.getString("result"), destPath); logger.info("图片增强后文件大小:{}"+new File(destPath).length()/1024+"KB"); conn.disconnect(); } catch (Exception e) { logger.error("AI平台接口调用异常:{}"+e); e.printStackTrace(); }finally { try { if (out != null) { out.close(); if (in != null) { in.close(); } catch (IOException ex) { ex.printStackTrace(); private static String imageToBase64(String path) String imgFile = path; InputStream in = null; byte[] data = null; in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); catch (IOException e) e.printStackTrace(); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(data);

base64字符串和文件转换工具类:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.commons.codec.binary.Base64;
public class FileBase64Util{
	  * 将文件转成base64 字符串
	  * @param path文件路径
	  * @return   
	  * @throws Exception
	 public static String encodeBase64File(String path) throws Exception {
	   File file = new File(path);
	   FileInputStream inputFile = new FileInputStream(file);
	   byte[] buffer = new byte[(int) file.length()];
	   inputFile.read(buffer);
	   inputFile.close();
	   return Base64.encodeBase64String(buffer);
	  * 将base64字符解码保存文件
	  * @param base64String
	  * @param targetPath
	  * @throws Exception
	 public static void decoderBase64File(String base64String, String targetPath)throws Exception {
	     byte[] buffer=Base64.decodeBase64(base64String);
	     FileOutputStream out = new FileOutputStream(targetPath);
	     out.write(buffer);
	     out.close();
	  * 将base64字符保存文本文件
	  * @param base64Code
	  * @param targetPath
	  * @throws Exception
	 public static void toFile(String base64Code, String targetPath)throws Exception {
	    byte[] buffer=base64Code.getBytes();
	    FileOutputStream out = new FileOutputStream(targetPath);
	    out.write(buffer);
	    out.close();
	 public static void main(String[] args){
	        String base64String=${base64字符串};
	        decoderBase64File(encodeBase64File("d://2018-11-27 14_34_28_reject_dq.pdf"),"D:/2.pdf");
	     }catch(Exception e){
	        e.printStackTrace();
                
收藏
回复
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
相关推荐