Java は画像の編集とテキストの追加を実装します

最近、ある要求を受け取りました。その要求は、画像の画像にテキストを挿入することです。挿入される具体的なテキストはプログラムによって異なります。たとえば、次の画像:

実績名、達成単位、達成者名を記入する必要があります。

ペイントツールを開いてテキストを選択します

次に、テキスト ボックスを使用して余白を測定します。余白を使用して、テキストが書かれている位置を特定できます。幅は 1105 です。

高さ530

実装されたコードは次のとおりです。

@GetMapping("/downImg")
public void downImg(HttpServletResponse response) {
    
    
    downloadService.downImg(response);
}

次のコードでは、hutool ツール クラスを使用する IoUtil を除き、その他は Java 基本クラスに属します (他の依存関係を導入せずに使用できます)。

public void downImg(HttpServletResponse response) {
    
    
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try {
    
    
        inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/中医药科技成果登记证书.png");
        Image src = ImageIO.read(inputStream);
        // 获取图片的高和宽
        int wideth = src.getWidth(null);
        int height = src.getHeight(null);
        // 新增一个图片缓冲
        BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.createGraphics();
        g.drawImage(src, 0, 0, wideth, height, null);
        // 设置字体颜色(颜色也可以直接new定义rgba,例如new Color(17, 16, 44))
        g.setColor(Color.BLACK);
        // size字体大小,Font.BOLD字体加粗
        g.setFont(new Font("宋体", Font.BOLD, 50));
        // 写入成果名称,由宽度减去我们测的宽度度,就等于要开始写的位置
        g.drawString("测试测试", wideth - 1105, height - 530);

        // 释放资源
        g.dispose();
        responseSetting(response, "中医药科技", ".png", "image/png");
        outputStream = response.getOutputStream();
        ImageIO.write(image, "png", outputStream);
    } catch (IOException e) {
    
    
        throw new RuntimeException(e);
    } finally {
    
    
        IoUtil.close(inputStream);
        IoUtil.close(outputStream);
    }
}

テスト:

Font クラスについて:public Font(String name, int style, int size)

  • 名前: フォント、中国語フォント名: Song Ti、Kai Ti、Hei Ti など、英語フォント名: Arial、Times New Roman など。
  • スタイル: スタイル
    • Font.PLAIN(プレーン)
    • Font.BOLD(太字)
    • Font.ITALIC (イタリック)
    • Font.BOLD+Font.ITALIC (斜体の太字)
  • サイズ: 文字サイズ

おすすめ

転載: blog.csdn.net/weixin_43888891/article/details/130867136