簡體   English   中英

java 中圖像上的多個文本行作為水印

[英]Multiple Text Lines as Watermark on image in java

我想在 java 中的解碼圖像上打印特定格式作為水印,例如圖像上的時間戳、緯度、經度。 我為它創建了一個 watermarkformat pojo class。 現在我想在解碼/渲染圖像上為該特定格式添加水印,但 Graphics2D drawString() 方法采用字符串和 x,y 坐標。 我應該如何將我的 object 轉換為字符串以傳遞給 drawString()

看下面的代碼——

BufferedImage watermarked = new BufferedImage(imageWidth, imageHeight, imageType);

    // initializes necessary graphic properties
    Graphics2D w = (Graphics2D) watermarked.getGraphics();
    w.drawImage(image, 0, 0, null);
    AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f);
    w.setComposite(alphaChannel);
    w.setColor(Color.RED);
    w.setFont(new Font("Verdana", Font.BOLD, 12));
    w.drawString(text,100,70); // here i want alternative method which takes watermarkformat object or any alternative way 
    ImageIO.write(watermarked, type, destination);
    w.dispose();

請幫助在圖像上打印特定格式的替代方法是什么?

如果您正在談論的是多行水印,那么您可能想嘗試這個來替換您當前的 w.drawString() 方法:

// If the text is in a single string with newline characters in it
for (String line : text.split("\n")) {
    w.drawString(line, x, y += w.getFontMetrics().getHeight());
}

// If the text is in a String Array named: text[]
for (String line : text) {
    w.drawString(line, x, y += w.getFontMetrics().getHeight());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM