更新時間:2022-10-08 10:35:44 來源:動力節點 瀏覽5542次
在Java中,我們可以使用javax.imageio。ImageIO類來讀取和寫入一個圖像。
從文件讀取圖像。
BufferedImage image = ImageIO.read(new File("c:\\test\\image.png"));
讀一個圖像從一個URL。
BufferedImage image = ImageIO.read(new URL("https://example.com/image.png"));
以不同的圖像格式寫入或保存圖像。
ImageIO.write(bufferedImage , "jpg", new File("c:\\test\\image.jpg"));
ImageIO.write(bufferedImage , "gif", new File("c:\\test\\image.gif"));
ImageIO.write(bufferedImage , "png", new File("c:\\test\\image.png"));
下面的代碼片段列出了所有支持的格式。
String writerNames[] = ImageIO.getWriterFormatNames();
Arrays.stream(writerNames).forEach(System.out::println);
輸出
PG
jpg
tiff
bmp
BMP
gif
GIF
WBMP
png
PNG
JPEG
tif
TIF
TIFF
wbmp
jpeg
一個完整的 Java 示例,ImageIO用于從 URL(Google 徽標)讀取圖像、調整大小并將其300x150保存到文件中。
package com.mkyong.io.image;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadWriteImage {
// Google logo url
private static final String GOOGLE_LOGO =
"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
public static void main(String[] args) {
try {
URL url = new URL(GOOGLE_LOGO);
// read an image from url
BufferedImage image = ImageIO.read(url);
// resize image to 300x150
Image scaledImage = image.getScaledInstance(300, 150, Image.SCALE_DEFAULT);
// save the resize image aka thumbnail
ImageIO.write(
convertToBufferedImage(scaledImage),
"png",
new File("C:\\test\\google.png"));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Done");
}
// convert Image to BufferedImage
public static BufferedImage convertToBufferedImage(Image img) {
if (img instanceof BufferedImage) {
return (BufferedImage) img;
}
// Create a buffered image with transparency
BufferedImage bi = new BufferedImage(
img.getWidth(null), img.getHeight(null),
BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics2D = bi.createGraphics();
graphics2D.drawImage(img, 0, 0, null);
graphics2D.dispose();
return bi;
}
}
下載的圖像被調整為 300×150。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習