如何在Java控制台应用程序中加载图像? (没有小程序)

时间:2011-05-23 14:36:19

标签: java awt

我正在创建一个输出一系列图像文件的Java控制台应用程序,我想在输出中绘制一个图像文件。 getImage似乎不起作用,它需要Toolkit或其他东西。

Image cover = getImage("cover.png");

有什么想法吗?

编辑:程序不显示图像,它会生成图像并将它们保存到一系列文件中。我想出了如何保存图像,绘制基本几何图形,但不管图像是出于何种原因。

3 个答案:

答案 0 :(得分:4)

使用不同图像格式的另一种方法是ImageIO类。以下示例将jpg转换为png并绘制十字。

public class ImageReaderExample {

    public static void main(String[] args) {
     try{
          BufferedImage image = ImageIO.read(new File("/tmp/input.jpg"));

          image.getGraphics().drawLine(1, 1, image.getWidth()-1, image.getHeight()-1);
          image.getGraphics().drawLine(1, image.getHeight()-1, image.getWidth()-1, 1);

          ImageIO.write(image, "png", new File("/tmp/output.png"));
     }
     catch (IOException e){
         e.printStackTrace();
     }
    }
}

答案 1 :(得分:1)

如果您实际上并未尝试绘制图像,只是尝试使用awt类,则需要通过设置java.awt.headless系统属性来告诉awt以无头模式运行。您可以在程序中执行此操作,然后再加载awt:

System.setProperty("java.awt.headless", "true"); 

或在运行程序时在命令行上设置属性:

java -Djava.awt.headless=true Program

答案 2 :(得分:0)

你想在哪里画画?看到你需要一些输出,这可能有所帮助,假设bmps(但解释了其他格式):

http://java.sun.com/products/java-media/jai/forDevelopers/jai1_0_1guide-unc/Encode.doc.html

 // Define the source and destination file names.
 String inputFile = /images/FarmHouse.tif
 String outputFile = /images/FarmHouse.bmp

 // Load the input image.
 RenderedOp src = JAI.create("fileload", inputFile);

 // Encode the file as a BMP image.
 FileOutputStream stream =
     new FileOutputStream(outputFile);
 JAI.create("encode", src, stream, BMP, null);

 // Store the image in the BMP format.
 JAI.create("filestore", src, outputFile, BMP, null);

读取和写入Bmp文件。