Несколько текстовых линий в виде водяных знаков на изображении в java - PullRequest
1 голос
/ 06 апреля 2020

Я хочу напечатать указанный c формат в виде водяного знака на декодированном изображении в java, такой как отметка времени, широта, долгота на изображении. Для этого я создал класс pojo для водяных знаков. Теперь я хочу отметить этот формат на декодированном / визуализированном изображении, но метод Graphics2D drawString () принимает координаты String и x, y. Как мне преобразовать мой объект в строку для передачи в 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();

помогите, пожалуйста, каким может быть альтернативный способ печати указанного c формата на изображении?

1 Ответ

2 голосов
/ 06 апреля 2020

Если то, о чем вы говорите, является многострочным водяным знаком, то вы можете попробовать это заменить текущий метод 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());
}
...