diff --git a/docs/api_CN.md b/docs/api_CN.md index 142e72c..7047710 100644 --- a/docs/api_CN.md +++ b/docs/api_CN.md @@ -1,5 +1,14 @@ # API Docs +## 目录 + +- [开始之前:开启后端服务](#开始之前开启后端服务) +- [接口功能说明](#接口功能说明) +- [Python 请求示例](#python-请求示例) + - [Python Requests 请求方法](#1️⃣-python-requests-请求方法) + - [Python 脚本请求方法](#2️⃣-python-脚本请求方法) +- [Java 请求示例](#java-请求示例) + ## 开始之前:开启后端服务 在请求 API 之前,请先运行后端服务 @@ -134,7 +143,6 @@ python requests_api.py -u -t -i -o diff --git a/docs/api_EN.md b/docs/api_EN.md index af1b18d..ec7e852 100644 --- a/docs/api_EN.md +++ b/docs/api_EN.md @@ -1,5 +1,14 @@ # API Documentation +## TOC + +- [Before You Start: Launch the Backend Service](#before-you-start-launch-the-backend-service) +- [Interface Function Descriptions](#interface-function-descriptions) +- [Python Request Example](#python-request-example) + - [Python Requests Method](#1️⃣-python-requests-method) + - [Python Script Method](#2️⃣-python-script-request-method) +- [Java Request Example](#java-request-example) + ## Before You Start: Launch the Backend Service Before making API requests, please run the backend service: @@ -40,9 +49,11 @@ The `Generate 6-inch Layout Photo` interface logic involves sending an RGB image
-## 1️⃣ Python Requests Method +## Python Request Example -### 1. Generate ID Photo (Transparent Background) +### 1️⃣ Python Requests Method + +#### 1. Generate ID Photo (Transparent Background) ```python import requests @@ -59,7 +70,7 @@ response = requests.post(url, files=files, data=data).json() print(response) ``` -### 2. Add Background Color +#### 2. Add Background Color ```python import requests @@ -76,7 +87,7 @@ response = requests.post(url, files=files, data=data).json() print(response) ``` -### 3. Generate 6-inch Layout Photo +#### 3. Generate 6-inch Layout Photo ```python import requests @@ -95,15 +106,15 @@ print(response)
-## 2️⃣ Python Script Request Method +### 2️⃣ Python Script Request Method ```bash python requests_api.py -u -t -i -o [--height ] [--width ] [-c ] [-k ] ``` -### Parameter Descriptions +#### Parameter Descriptions -#### Basic Parameters +##### Basic Parameters - `-u`, `--url` @@ -126,7 +137,7 @@ python requests_api.py -u -t -i -o -t -i -o + cn.hutool + hutool-all + 5.8.16 + + + + commons-io + commons-io + 2.6 + +``` + +### Running the Code + +#### 1. Generate ID Photo (Transparent Background) + +```java + /** + * Generate ID Photo (Transparent Background) /idphoto interface + * @param inputImageDir File address + * @return + * @throws IOException + */ + public static String requestIdPhoto(String inputImageDir) throws IOException { + String url = BASE_URL+"/idphoto"; + // Create file object + File inputFile = new File(inputImageDir); + Map paramMap=new HashMap<>(); + paramMap.put("input_image",inputFile); + paramMap.put("height","413"); + paramMap.put("width","295"); + // Contains status, image_base64_standard, and image_base64_hd + return HttpUtil.post(url, paramMap); + } +``` + +#### 2. Add Background Color + +```java + /** + * Add Background Color /add_background interface + * @param inputImageDir File address + * @return + * @throws IOException + */ + public static String requestAddBackground(String inputImageDir) throws IOException { + String url = BASE_URL+"/add_background"; + // Create file object + File inputFile = new File(inputImageDir); + Map paramMap=new HashMap<>(); + paramMap.put("input_image",inputFile); + paramMap.put("color","638cce"); + paramMap.put("kb","200"); + // Response is a JSON dictionary containing status and image_base64 + return HttpUtil.post(url, paramMap); + } +``` + +#### 3. Generate 6-inch Layout Photo + +```java + /** + * Generate 6-inch Layout Photo /generate_layout_photos interface + * @param inputImageDir File address + * @return + * @throws IOException + */ + public static String requestGenerateLayoutPhotos(String inputImageDir) throws IOException { + String url = BASE_URL+"/generate_layout_photos"; + // Create file object + File inputFile = new File(inputImageDir); + Map paramMap=new HashMap<>(); + paramMap.put("input_image",inputFile); + paramMap.put("height","413"); + paramMap.put("width","295"); + paramMap.put("kb","200"); + // Response is a JSON dictionary containing status and image_base64 + return HttpUtil.post(url, paramMap); + } +``` + +#### 4. Summary + +```java + +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import org.apache.commons.io.FileUtils; +import org.springframework.util.StringUtils; +import java.io.File; +import java.io.IOException; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: qingshuang + * @createDate: 2024/09/05 + * @description: Java generate ID photo, test case + */ +public class Test { + /** + * Interface address + */ + private final static String BASE_URL = "http://127.0.0.1:8080"; + + /** + * Generate ID Photo (Transparent Background) /idphoto interface + * @param inputImageDir File address + * @return + * @throws IOException + */ + public static String requestIdPhoto(String inputImageDir) throws IOException { + String url = BASE_URL+"/idphoto"; + // Create file object + File inputFile = new File(inputImageDir); + Map paramMap=new HashMap<>(); + paramMap.put("input_image",inputFile); + paramMap.put("height","413"); + paramMap.put("width","295"); + return HttpUtil.post(url, paramMap); + } + /** + * Add Background Color /add_background interface + * @param inputImageDir File address + * @return + * @throws IOException + */ + public static String requestAddBackground(String inputImageDir) throws IOException { + String url = BASE_URL+"/add_background"; + // Create file object + File inputFile = new File(inputImageDir); + Map paramMap=new HashMap<>(); + paramMap.put("input_image",inputFile); + paramMap.put("color","638cce"); + paramMap.put("kb","200"); + return HttpUtil.post(url, paramMap); + } + /** + * Generate 6-inch Layout Photo /generate_layout_photos interface + * @param inputImageDir File address + * @return + * @throws IOException + */ + public static String requestGenerateLayoutPhotos(String inputImageDir) throws IOException { + String url = BASE_URL+"/generate_layout_photos"; + // Create file object + File inputFile = new File(inputImageDir); + Map paramMap=new HashMap<>(); + paramMap.put("input_image",inputFile); + paramMap.put("height","413"); + paramMap.put("width","295"); + paramMap.put("kb","200"); + return HttpUtil.post(url, paramMap); + } + /** + * Generate ID Photo (Transparent Background) + * @param inputImageDir Source file address + * @param outputImageDir Output file address + * @throws IOException + */ + private static void requestIdPhotoToImage(String inputImageDir, String outputImageDir) throws IOException { + String res =requestIdPhoto(inputImageDir); + // Convert to JSON + JSONObject response= JSONUtil.parseObj(res); + if(response.getBool("status")){// Request interface success + String image_base64_standard= response.getStr("image_base64_standard"); + String image_base64_hd =response.getStr("image_base64_hd"); + String[] outputImageDirArr= StringUtils.split(outputImageDir,"."); + // Base64 save as image + FileUtils.writeByteArrayToFile(new File(outputImageDirArr[0]+"_standard."+outputImageDirArr[1]), Base64.getDecoder().decode(image_base64_standard)); + FileUtils.writeByteArrayToFile(new File(outputImageDirArr[0]+"_hd."+outputImageDirArr[1]), Base64.getDecoder().decode(image_base64_hd)); + } + } + /** + * Add Background Color + * @param inputImageDir Source file address + * @param outputImageDir Output file address + * @throws IOException + */ + private static void requestAddBackgroundToImage(String inputImageDir, String outputImageDir) throws IOException { + String res =requestAddBackground(inputImageDir); + // Convert to JSON + JSONObject response= JSONUtil.parseObj(res); + if(response.getBool("status")){// Request interface success + String image_base64= response.getStr("image_base64"); + String[] outputImageDirArr= StringUtils.split(outputImageDir,"."); + // Base64 save as image + FileUtils.writeByteArrayToFile(new File(outputImageDirArr[0]+"_background."+outputImageDirArr[1]), Base64.getDecoder().decode(image_base64)); + } + } + /** + * Generate 6-inch Layout Photo + * @param inputImageDir Source file address + * @param outputImageDir Output file address + * @throws IOException + */ + private static void requestGenerateLayoutPhotosToImage(String inputImageDir, String outputImageDir) throws IOException { + String res =requestGenerateLayoutPhotos(inputImageDir); + // Convert to JSON + JSONObject response= JSONUtil.parseObj(res); + if(response.getBool("status")){// Request interface success + String image_base64= response.getStr("image_base64"); + String[] outputImageDirArr= StringUtils.split(outputImageDir,"."); + // Base64 save as image + FileUtils.writeByteArrayToFile(new File(outputImageDirArr[0]+"_layout."+outputImageDirArr[1]), Base64.getDecoder().decode(image_base64)); + } + } + + public static void main(String[] args) { + try { + // Generate ID Photo (Transparent Background) + requestIdPhotoToImage("C:\\Users\\Administrator\\Desktop\\1111.jpg","C:\\Users\\Administrator\\Desktop\\2222.png"); + // Add Background Color + requestAddBackgroundToImage("C:\\Users\\Administrator\\Desktop\\2222_hd.png","C:\\Users\\Administrator\\Desktop\\idphoto_with_background.jpg"); + // Generate 6-inch Layout Photo + requestGenerateLayoutPhotosToImage("C:\\Users\\Administrator\\Desktop\\1111.jpg","C:\\Users\\Administrator\\Desktop\\2222.png"); + + } catch (IOException e) { + e.printStackTrace(); + } + } +} + +```