阿里云水印处理文档链接 https://helpcdn.aliyun.com/document_detail/44957.html
//image/watermark 开头
// /watermark 下一个处理
String style="image/watermark,text_5L2g,type_ZmFuZ3poZW5naGVpdGk,size_200,color_000000,y_120,x_125,g_nw/watermark,text_5aSn,type_ZmFuZ3poZW5naGVpdGk,size_200,color_000000,,y_120,x_125,g_ne";
/**
* 得到处理过后的图片的输入流
*
* @param bucketName bucket
* @param objectName 图片名称
* @param style 样式
* @return 输入流
*/
public static InputStream handleImage(String bucketName, String objectName, String style, UploadConfig config) {
OSS ossClient = getOssClient(config);
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
return ossClient.getObject(request).getObjectContent();
}
根据文字生成logo
public static String generateLogo(UploadConfig conf, String logoStr) {
StringBuilder sb = new StringBuilder();
// sb.append("https://oss-cd-jianmu.oss-cn-chengdu.aliyuncs.com/upload/logo-template.png?x-oss-process=image/");
String textStyle = ",type_ZmFuZ3poZW5nc2h1c29uZw,size_200,color_000000,";
sb.append("image/watermark,");
String[] arr = logoStr.split("");
String a, b, c, d;
if (arr.length < 2 || arr.length > 4) {
return "";
}
if (arr.length == 2) {
a = arr[0];
b = arr[1];
//方正黑体,字体大小200,黑色,左中
if (StringUtils.isNotBlank(a)) {
sb.append("text_");
sb.append(to64(a));
sb.append(textStyle);
sb.append("y_120,x_125,g_west");
}
//方正黑体,字体大小200,黑色,右中
if (StringUtils.isNotBlank(b)) {
sb.append("/watermark,text_");
sb.append(to64(b));
sb.append(textStyle);
sb.append(",y_120,x_125,g_east");
}
}
if (arr.length == 3) {
a = arr[0];
b = arr[1];
c = arr[2];
//方正黑体,字体大小200,黑色,左上
if (StringUtils.isNotBlank(a)) {
sb.append("text_");
sb.append(to64(a));
sb.append(textStyle);
sb.append("y_120,x_125,g_nw");
}
//方正黑体,字体大小200,黑色,右上
if (StringUtils.isNotBlank(b)) {
sb.append("/watermark,text_");
sb.append(to64(b));
sb.append(textStyle);
sb.append(",y_120,x_125,g_ne");
}
//方正黑体,字体大小200,黑色,下中
if (StringUtils.isNotBlank(c)) {
sb.append("/watermark,text_");
sb.append(to64(c));
sb.append(textStyle);
sb.append("y_125,x_125,g_south");
}
}
if (arr.length == 4) {
a = arr[0];
b = arr[1];
c = arr[2];
d = arr[3];
//方正黑体,字体大小200,黑色,左上
if (StringUtils.isNotBlank(a)) {
sb.append("text_");
sb.append(to64(a));
sb.append(textStyle);
sb.append("y_120,x_125,g_nw");
}
//方正黑体,字体大小200,黑色,右上
if (StringUtils.isNotBlank(b)) {
sb.append("/watermark,text_");
sb.append(to64(b));
sb.append(textStyle);
sb.append(",y_120,x_125,g_ne");
}
//方正黑体,字体大小200,黑色,左下 右下
if (StringUtils.isNotBlank(c)) {
sb.append("/watermark,text_");
sb.append(to64(c));
sb.append(textStyle);
sb.append("y_125,x_125,g_sw");
}
if (StringUtils.isNotBlank(d)) {
sb.append("/watermark,text_");
sb.append(to64(d));
sb.append(textStyle);
sb.append("y_125,x_125,g_se");
}
}
InputStream is = new BufferedInputStream(handleImage(conf.getBucketName(), "upload/logo-template.png", sb.toString(), conf));
return upload(is, "png", conf);
}
// /**
// * @param title1 2019年广东省”创尔杯“
// * @param title2 啊啊啊啊啊啊啊啊
// * @param qrOne64 长按识别二维码
// * @param qrTwo64 为支持的选手打CALL!
// * @param qr64 to64(IMAGE_POSTER_BG + "55ee15291ec34b6fab4f6ba35e4c183e.png?x-oss-process=image/resize,m_fixed,w_69,h_69,image/rounded-corners,r_10");
// * @param cover64 to64(IMAGE_POSTER_BG + "6.jpg?x-oss-process=image/resize,m_lfit,w_221,h_99,image/rounded-corners,r_10");
// * @return 文件输入流
// */
public static InputStream posterActivity(ActivityPoster poster) {
if (log.isDebugEnabled()) {
log.debug("poster:{}", JSON.toJSONString(poster));
}
String title1 = "";
String title2 = "";
if (poster.getTitle().length() > 11) {
title1 = poster.getTitle().substring(0, 11);
title2 = poster.getTitle().substring(11);
} else {
title1 = poster.getTitle();
}
String builder = "image/watermark," +
"text_" + to64(title1) + ",color_FFBF00,g_north,y_25,size_14" +
(title2.isEmpty() ? "" : "/watermark,text_" + to64(title2) + ",color_FFBF00,g_north,y_45,size_14") +
"/watermark,image_" + to64(poster.getCoverPath() + "?x-oss-process=image/resize,m_lfit,w_221,h_99,image/rounded-corners,r_10") + ",g_north,y_75" +
"/watermark,text_" + to64(poster.getQrInfo1()) + ",color_FFBF00,g_north,y_196,size_12" +
"/watermark,text_" + to64(poster.getQrInfo2()) + ",color_FFBF00,g_north,y_212,size_12" +
"/watermark,image_" + to64(poster.getQrUrl() + "?x-oss-process=image/resize,m_fixed,w_69,h_69,image/rounded-corners,r_10") + ",g_south,y_24";
return new BufferedInputStream(handleImage(BUCKET_NAME, IMAGE_POSTER_BG + "activity1.png", builder));
}
/**
* 高清海报
*
* @param poster
* @return
*/
public static InputStream posterHdActivity(ActivityPoster poster) {
if (log.isDebugEnabled()) {
log.debug("poster:{}", JSON.toJSONString(poster));
}
String title1 = "";
String title2 = "";
if (poster.getTitle().length() > 11) {
title1 = poster.getTitle().substring(0, 11);
title2 = poster.getTitle().substring(11);
} else {
title1 = poster.getTitle();
}
String builder = "image/watermark," +
"text_" + to64(title1) + ",color_FFBF00,g_north,y_" + (25 * 2) + ",size_" + (14 * 2) +
(title2.isEmpty() ? "" : "/watermark,text_" + to64(title2) + ",color_FFBF00,g_north,y_" + (45 * 2) + ",size_" + (14 * 2)) +
"/watermark,image_" + to64(poster.getCoverPath() + "?x-oss-process=image/resize,m_fixed,w_" + (221 * 2) + ",h_" + (99 * 2) + ",image/rounded-corners,r_" + (10 * 2)) + ",g_north,y_" + (75 * 2) +
"/watermark,text_" + to64(poster.getQrInfo1()) + ",color_FFBF00,g_north,y_" + (196 * 2) + ",size_" + (12 * 2) +
"/watermark,text_" + to64(poster.getQrInfo2()) + ",color_FFBF00,g_north,y_" + (212 * 2) + ",size_" + (12 * 2) +
"/watermark,image_" + to64(poster.getQrUrl() + "?x-oss-process=image/resize,m_fixed,w_" + (69 * 2) + ",h_" + (69 * 2) + ",image/rounded-corners,r_" + (10 * 2)) + ",g_south,y_" + (24 * 2);
return new BufferedInputStream(handleImage(BUCKET_NAME, IMAGE_POSTER_BG + "activity2.png", builder));
}