Java将文本放置到图像上不显示

标签 java eclipse image swing javax.imageio

嘿,我是 Java 世界的新手,所以这可能是一个很容易解决的问题,但我无法找出它出了什么问题。

我想将一些文本放置到我正在创建的图像上。问题是,一旦保存图像,我查看它,就没有文本了。

String tiffImg = "";    
String imgPath = "";
BufferedImage image = null;

@SuppressWarnings("rawtypes")
protected boolean saveTiff(String filename, BufferedImage image) {      
    File tiffFile = new File(filename);
    ImageOutputStream ios = null;
    ImageWriter writer = null;

    try {
        Iterator it = ImageIO.getImageWritersByFormatName("TIF");

        if (it.hasNext()) {
            writer = (ImageWriter)it.next();
        } else {
            return false;
        }

        ios = ImageIO.createImageOutputStream(tiffFile);
        imgPath = tiffFile.getAbsolutePath();
        writer.setOutput(ios);
        TIFFImageWriteParam writeParam = new TIFFImageWriteParam(Locale.ENGLISH);
        writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        writeParam.setCompressionType("PackBits");
        IIOImage iioImage = new IIOImage(image, null, null);
        writer.write(null, iioImage, writeParam);
    } catch (IOException e) {
        e.printStackTrace();

        return false;
    }

    return true;
}

public static BufferedImage decodeToImage(String imageString) {
    BufferedImage image = null;
    byte[] imageByte;

    try {
        Base64.Decoder decoder = Base64.getDecoder();
        imageByte = decoder.decode(imageString);
        ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
        image = ImageIO.read(bis);
        bis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return image;
}

public BufferedImage placeDataOnImage(BufferedImage image, String transNum) {       
    try {           
        Graphics g = image.getGraphics();
        g.setFont(g.getFont().deriveFont(30f));

        g.drawString(transNum, 150, 1350);
        g.drawString(transNum, 200, 2805);
        g.drawString(transNum, 200, 4453);

        g.drawString("DFDFFFF", 225, 590);
        g.drawString("rrrr", 225, 675);
        g.drawString("555-555-5555", 225, 718);

        g.drawString("Jocelyn", 767, 597);
        g.drawString("1-877-324-6427, ext. #", 767, 665);
        g.drawString("1-888-550-6427 (Toll Free)", 767, 701);

        g.drawString("11/28/18", 276, 800);
        g.drawString("11/28/18", 718, 799);
        g.drawString("2", 270, 837);

        g.drawString("sdfsdfsdfsdfsdf", 176, 1880);
        g.drawString("11/15/2018", 176, 1980);
        g.dispose();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return image;
}

public String exec(ITestExecutionServices tes, String[] args) {        
    boolean savedImg = false;
    String currentTransID = args[0];

    image = decodeToImage(tiffImg);
    image = placeDataOnImage(image, currentTransID);
    savedImg = saveTiff(currentTransID + ".tiff", image);

    if (savedImg) {
        tes.getTestLogManager().reportVerificationPoint("TIFF created with Transaction ID# " + currentTransID, VerdictEvent.VERDICT_PASS);
    } else {
        tes.getTestLogManager().reportVerificationPoint("TIFF could not be created", VerdictEvent.VERDICT_ERROR);
    }

    return null;
}

有人看出我哪里做错了吗?

最佳答案

呃……刚刚想到一件事。我没有指定文本的颜色,因此我认为它默认为白色 - 这就是我看不到它的全部原因。

我添加:

g.setColor(Color.BLACK);

它神奇地出现在图像上!想想看......

关于Java将文本放置到图像上不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310823/

相关文章:

eclipse - java.io.IOException : No FileSystem for scheme: maprfs 异常

android - Twitter Bootstrap 在 Android WebView 中不工作

algorithm - 从照片/图像生成线条

java - 创建可移植标准桌面 GUI 应用程序有哪些好的选择

Java 框架 war : Spring and Hibernate

java - 如果放置在 setVisible(true) 之后,JDialog 中的事件处理程序将不起作用

Java,BorderLayout.CENTER,获取JPanel的宽高

java - Tomcat 7 的 Spring 配置类处理器错误

java - 将彩色图像转换为背景/白色图像

html - 如何在不添加滚动条的情况下使图像部分落在屏幕上