【发布时间】:2012-11-02 00:23:35
【问题描述】:
我有一个第 3 方库,可以从视频流中生成 java.awt.Image 对象。 (实际上,它最初是用来解码 .h264 文件,然后显示在 JFrame 中解码的图像)。
现在,我想使用该库来捕获流的多个图像并将它们保存到硬盘。 那么,我必须怎么做才能将这些 java.awt.Image 保存到文件中?
【问题讨论】:
我有一个第 3 方库,可以从视频流中生成 java.awt.Image 对象。 (实际上,它最初是用来解码 .h264 文件,然后显示在 JFrame 中解码的图像)。
现在,我想使用该库来捕获流的多个图像并将它们保存到硬盘。 那么,我必须怎么做才能将这些 java.awt.Image 保存到文件中?
【问题讨论】:
请查看本教程:Writing/Saving an Image
这是一项基本任务,ImageIO 库将帮助您轻松完成此任务。
【讨论】:
类型可以是“jpg”、“png”(Java
要保存 ToolKitImage,您可以执行以下操作。
BufferedImage bufferedImage= new BufferedImage(toolkitImage.getWidth(), toolkitImage.getHeight(), BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(toolkitImage, 0, 0, null);
ImageIO.write(bufferedImage, "jpg", new File("C:\\myImage.jpg"));
【讨论】:
类似的东西;
Image img = /* your image */
BufferedImage bi = (BufferedImage)img;
File f = new File("./output.png");
ImageIO.write(bi, "png", f);
【讨论】:
ToolkitImage 进行转换,或者将Image 绘制为Graphics 对象以便产生一个BufferedImage
public void savePic(Image image, String type, String dst){
int width = image.getWidth(this);
int height = image.getHeight(this);
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_3BYTE_BGR);
Graphics g = bi.getGraphics();
try {
g.drawImage(image, 0, 0, null);
ImageIO.write(bi, type, new File(dst));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
【讨论】: