海报生成 方案二 推荐阿里云对象云 生成海报

阿里云水印处理文档链接 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));
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等一场春雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值