簡體   English   中英

在不使用 Graphics2D 的圖像上繪制文本

[英]Drawing text on image not working with Graphics2D

我想在圖像上寫一些文字時遇到了一些問題。 正如我所看到的,可以使用以下代碼完成:

package asd;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;

public class ImageAddingText {

    
    public static void main(String args[]) throws IOException {
        
        BufferedImage image = ImageIO.read(new File("C:\\Users\\Slobodan\\Desktop\\image2.png"));
        
        Font font = new Font("Arial", Font.BOLD, 20);
        
        Graphics g = image.getGraphics();
        g.setFont(font);
        g.setColor(Color.GREEN);
        g.drawString("Medium", 50, 50);
        System.out.println("Finished");
        System.out.println(image.getWidth());
    }
}

因此圖像被加載到 memory 中,image.getGraphics() 創建 Graphics2D object,然后設置字體、顏色和繪制字符串。 但是在圖像中沒有任何反應,它仍然完全保持不變。 圖像是黑白的,白色占據了大部分空間。我試圖改變colors,圖像的擴展,似乎沒有任何幫助。 我期待我可以直接在圖像上看到變化,我認為它應該以這種方式工作。 在它運行和編譯之后,根本沒有錯誤消息。 我正在使用 Java 8 和 Spring 引導。 (雖然我只運行 Java)
有誰可能知道那里可能是什么問題?

非常感謝您的閱讀。

同樣,您的代碼適用於我,使用在線圖片:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.*;

public class ImageAddingText {

    
    public static void main(String args[]) throws IOException {
        String imgUrl = "https://media.glamour.com/photos/5a425fd3b6bcee68da9f86f8/16:9/w_2560%2Cc_limit/best-face-oil.png";
        
        // BufferedImage image = ImageIO.read(new File("C:\\Users\\Slobodan\\Desktop\\image2.png"));
        
        URL url = new URL(imgUrl);
        BufferedImage image = ImageIO.read(url);
        
        // display the original image
        Icon icon = new ImageIcon(image);
        JOptionPane.showMessageDialog(null, icon);            

        Font font = new Font("Arial", Font.BOLD, 20);            
        Graphics g = image.getGraphics();
        g.setFont(font);
        g.setColor(Color.GREEN);
        g.drawString("Medium", 50, 50);
        
        g.dispose(); // you should always dispose resources *you* create yourself

        // display the changed image
        icon = new ImageIcon(image);            
        JOptionPane.showMessageDialog(null, icon);      
        
        System.out.println("Finished");
        System.out.println(image.getWidth());
    }
}

暫無
暫無

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

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