從零開始學YC-Framework之Image-Combiner

語言: CN / TW / HK

一、Image-Combiner是什麼?

ImageCombiner是一個專門用於Java服務端圖片合成的工具,沒有很複雜的功能,簡單實用,從實際業務場景出發,提供簡單的接口,幾行代碼即可實現圖片拼合(當然用於合成水印也可以),素材上支持圖片、文本、矩形三種,支持定位、縮放、旋轉、圓角、透明度、顏色、字體、字號、刪除線、居中繪製、文本自動換行等特性,足夠覆蓋圖片合成的日常需求。

二、Image-Combiner誕生的背景是什麼?

該開源作者這樣敍述:

最近公司上了不少傳播方面的需求,免不了合成各種營銷圖片,圖片合成本身並不是什麼高深的技術,但用底層api去搞確實繁瑣,於是抽時間封裝了一個小工具,初衷是解放生產力,後來發現挺好使,那就開源吧,花了一個整天重新整理了一下代碼,作為自己從業十年第一個開源項目(打破零記錄,哈哈),希望能夠幫助到需要的小夥伴~。

三、Image-Combiner的UML圖是怎樣的?

四、Image-Combiner如何使用?

ImageCombiner使用起來相當簡單,主要的類只用一個,new一個ImageCombiner對象,指定背景圖片和輸出格式,然後加入各種素材元素,設置元素的位置、大小和效果(如圓角、顏色、透明度等),調用combine()方法即可。combine()方法直接返回BufferedImage對象,也可以調用getCombinedImageStream()獲得流,方便上傳oss等後續操作,或者調用save()方法保存到本地,調試的時候比較方便。

YC-Framework已集成該工具, 具體示例如下:

import com.freewayso.image.combiner.ImageCombiner;
import com.freewayso.image.combiner.element.TextElement;
import com.freewayso.image.combiner.enums.OutputFormat;
import java.awt.*;

public class TestImageCombiner {

    public static void dynamicWidthDemoTest() throws Exception {
        String bg = "https://framework.youcongtech.com/_media/%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84%E5%9B%BE-V1.0.jpg";
        ImageCombiner combiner = new ImageCombiner(bg, OutputFormat.JPG);
        String str1 = "Hello";
        String str2 = "小夥伴們 你們好";
        String str3 = ",這是我編寫的";
        String str4 = "分佈式微服務解決方案";
        int fontSize = 20;
        int xxxFontSize = 40;
        int offsetX = 20;   //通過計算前一個元素的實際寬度,並累加這個偏移量,得到後一個元素正確的x座標值
        int y = 200;

        //第一段
        TextElement element1 = combiner.addTextElement(str1, fontSize, offsetX, y);
        offsetX += element1.getWidth();     //計算寬度,並累加偏移量

        //第二段(內容不定,寬度也不定)
        TextElement element2 = combiner.addTextElement(str2, xxxFontSize, offsetX, y)
                .setColor(Color.red);
        offsetX += element2.getWidth();

        //第三段
        TextElement element3 = combiner.addTextElement(str3, fontSize, offsetX, y);
        offsetX += element3.getWidth();

        //第四段(內容不定,寬度也不定)
        TextElement element4 = combiner.addTextElement(str4, xxxFontSize, offsetX, y)
                .setColor(Color.YELLOW);
        offsetX += element4.getWidth();

        combiner.combine();
        combiner.save("d://test//demo.jpg");
    }

    public static void main(String[] args) throws Exception {
        dynamicWidthDemoTest();
    }
}

該代碼運行效果圖如下所示:

以上源代碼均已開源,開源不易,如果對你有幫助,不妨給個star!!!

YC-Framework官網:

https://framework.youcongtech.com/

YC-Framework Github源代碼:

https://github.com/developers-youcong/yc-framework

YC-Framework Gitee源代碼:

https://gitee.com/developers-youcong/yc-framework

五、相關作品集的效果圖有哪些?