zoukankan      html  css  js  c++  java
  • 图片美化增强AI接口调用手册

    在调合合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:灰度

    POST BODY,接口要求以Post body方式发送,因为要传base64字符串,请求参数过长有400错误的

    
        
    {
        "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:灰度
    }
    
    
    
    

    提示:POST BODY 为 JSON字符串。

    返回字段描述

    字段 说明
    code 返回状态码。200:正常返回; 500:服务器内部错误
    message 返回对应code的状态说明
    result base64编码的图片信息

    正常返回示例

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

    失败返回示例

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

    返回码说明
    在这里插入图片描述
    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;
            try
            {
                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;
            try
            {
                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){
    	     try{
    	        String base64String=${base64字符串};
    	        decoderBase64File(encodeBase64File("d://2018-11-27 14_34_28_reject_dq.pdf"),"D:/2.pdf");
    	     }catch(Exception e){
    	        e.printStackTrace();
    	     }
    	 }
    }
    
    
  • 相关阅读:
    【Linux】【Chrome】安装Chrome浏览器的攻略
    ubuntu下安装程序的三种方法
    scala学习笔记
    安装scala
    安装java
    Python学习笔记
    Linux安装python
    软件测试笔记
    Linux安装微信
    PUTTY学习
  • 原文地址:https://www.cnblogs.com/mzq123/p/10921474.html
Copyright © 2011-2022 走看看