虹图AI开放平台为很多音视频应用场景提供了服务,包括人像人体特效,内容审核等,用户不仅需要实时AI产品服务,还需要静态图片或视频进行特效处理,如风格转换、动漫化转换、图像画质增强等处理。那么我们虹图针对图像技术API能够提供什么服务呢?
在回答这个问题之前,先聊一下客户使用图像技术能力主要的原因。一般来讲,C端用户使用图像技术,主要是增加趣味性,比如将照片转换为动漫画风,其次是实用性,比如图像去噪、AI高清修复等。而B端为C端用户提供图像技术,主要应用在如头像上传、社区图片分享等步骤时,加上特效处理。
那么在这些应用需求下,图像特效技术主要提供什么功能呢?
图像特效
-
图像风格转换
虹图图像风格转换算法支持彩铅、油画、现代插画、沙画、铜板雕刻画风等50多种艺术风格特效转换。将用户原图转换为目标图片风格,如梵高的星空画风等,同时也支持指定风格图片+内容图片,按照指定风格图片,对输入内容图片进行风格处理,实现风格自定义。
-
人像动漫化
虹图人像动漫化支持日漫、手绘等多种动漫化风格,隐藏人脸大部分缺点的同时一张照片也能拥有不同的画风,用甜美的漫画风照片做社交账号的头像,也是很多女性用户的选择。
图像增强
基于领先的智能AI修复技术,一键提高图片对比度,优化图像纹理细节,使画面更加自然好看,图像色彩AI增强算法对图片不同色度、不同亮度的色彩进行识别,提高图片质量,增强图片色彩鲜明度。
为了解决C端和B端两类客户的需求,目前虹图有两种能力输出方案。一是针对C端的快速使用方案,二是针对B端的API调用。
一、快速使用方案,所见即所得,所得即可用
1.登录/注册
打开虹图官网https://www.texeljoy.com/,点击【登录】前往用户中心登录页面,可选择邮箱/手机号注册后登录。
2.实名认证
1.点击设置进入实名认证页面,选择个人/企业实名认证,点击【去认证】进入对应的认证页面,提交相关资料后等待审核通过即可创建项目;
3.创建项目
点击【项目管理】—【图像技术 】—【创建应用】输入应用名称即可创建一个免费项目,然后就能看到创建完的应用 API KEY 以及 Secret KEY 了。以上两个信息是您应用实际开发的主要凭证,每个应用之间各不相同,请您妥善保管。
4.领取免费资源
点击【项目管理】—【图像技术】—【资源列表】进入已领取资源页面,点击【领取免费资源】选择领取的应用名再根据需求领取对应的免费资源,领取成功后可前往已领取资源列表查看。免费资源使用完毕后需联系商务购买按量付费的套餐包才可继续使用,购买的功能可在资源列表-已购买资源中查看,通过创建完的应用的 API KEY 以及 Secret KEY可调用相应的功能。
5.快速调用
联系商务购买所需次数,无需代码接入,可线上上传图片一键快速调用。点击【图像技术】-【快速调用】进入快速调用页面,选择应用名称、产品类型即可一键调用该效果,点击下载可下载算法生成的效果图。
二、API快速对接,让你的应用即可获得图像特效能力
对于B端企业想要使用虹图图像技术能力,虹图以API方式提供。以下为图像技术API调用示例:
image = getBitmapFromURL("https://htaistar.oss-cn-hangzhou.aliyuncs.com/image_technology/example%20images/color_4.jpg");
public class Main {
private static final String TAG = "MainActivity";
public static final String APP_ID = "YOUR_APP_ID";
public static final String API_Key = "YOUR_API_KEY";
private static final String SERVER = "https://imagetech.texeljoy.com";
//图片技术接口地址
public static final String SIGNATURE = SERVER + "/api/image_tech/v1/signature";
public static final String STYLE_TRANSFER = SERVER + "/api/image_tech/v1/style_transfer";
String signature; //签名
int timestamp; //时间戳(秒级
String nonce = "1"; //随机字符串
String image; //待审核图片base64编码
String result; //服务器返回的结果
private void initData() {
//获取当前时间戳
Timestamp time = new Timestamp(System.currentTimeMillis());
timestamp = (int) (time.getTime()/1000);
//首先获取签名
JSONObject jsonObject = new JSONObject();
new Thread(new Runnable() {
@Override public void run() {
jsonObject.put("appId", APP_ID);
jsonObject.put("apiKey",API_Key);
jsonObject.put("timeStamp",timestamp);
jsonObject.put("nonce",nonce);
String signatureString = getSignature(SIGNATURE,jsonObject);
signature = String.valueOf(JSON.parseObject(signatureString).get("signature"));
Log.d(TAG, "获取signature为: "+signature);
}
}).start();
}
/**
* 风格迁移(调用方式为图片的base64编码)
*/
private void style_transfer() {
JSONObject jsonObject = new JSONObject();
JSONObject header = new JSONObject();
new Thread(new Runnable() {
@Override public void run() {
image = getBitmapFromURL("https://htaistar.oss-cn-hangzhou.aliyuncs.com/image_technology/example%20images/style_transfer_4.jpg");
header.put("APPId", APP_ID);
header.put("TimeStamp", timestamp);
header.put("Nonce", nonce);
header.put("Signature", signature);
jsonObject.put("image", image);
jsonObject.put("url", "");
jsonObject.put("style", 1);
result = sendHttpURLConnectionRequestPost(STYLE_TRANSFER, header, jsonObject);
Log.d(TAG, "style_transfer: " + result);
}
}).start();
}
/**
* 发送http请求
* @param address 请求的URL地址
* @param header 请求头
* @param jsonObject 封装后的请求参数
*/
public static String sendHttpURLConnectionRequestPost(String address, JSONObject header,JSONObject jsonObject){
String msg = "";
try {
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setConnectTimeout(3000);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestProperty("APPId",header.getString("APPId"));
connection.setRequestProperty("TimeStamp",header.getString("TimeStamp"));
connection.setRequestProperty("Nonce",header.getString("Nonce"));
connection.setRequestProperty("Signature",header.getString("Signature"));
connection.connect();
String json = jsonObject.toString();
OutputStream out = connection.getOutputStream();
out.write(json.getBytes(StandardCharsets.UTF_8));
out.flush();
out.close();
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while((line = reader.readLine()) != null){
msg += line + "\n";
}
reader.close();
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return msg;
}
/**
* 获取signature
* @param address 请求的URL地址
* @param jsonObject 封装后的请求参数
*/
public static String getSignature(String address,JSONObject jsonObject){
String msg = "";
try {
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setConnectTimeout(3000);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.connect();
String json = jsonObject.toString();
OutputStream out = connection.getOutputStream();
out.write(json.getBytes(StandardCharsets.UTF_8));
out.flush();
out.close();
int code = connection.getResponseCode();
if(code == HttpURLConnection.HTTP_OK){
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while((line = reader.readLine()) != null){
msg += line + "\n";
}
reader.close();
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return msg;
}
/**
* 从url中获取Bitmap
* @param src 图片地址url
* @return
*/
public static String getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] array = stream.toByteArray();
String headString = Base64.encodeToString(array, 0);
return headString.replace("\n","");
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
具体请求及API方法说明,可以查看虹图图像技术文档:https://doc.texeljoy.com/document/imageTechnology/specialEffect/
目前虹图图像技术服务已经被多家社交、社区平台采用。而且目前快速调用服务,免费对用户开放,每位用户仅需注册登录后,即可免费领取资源包,可以直接下载使用。