JAVA如何输入图片
读取图片文件
使用BufferedImage类和ImageIO类可以读取本地图片文件。ImageIO提供了read方法,支持JPEG、PNG、BMP等常见格式。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageInputExample {
public static void main(String[] args) {
try {
File file = new File("path/to/image.jpg");
BufferedImage image = ImageIO.read(file);
System.out.println("Image loaded successfully");
} catch (IOException e) {
e.printStackTrace();
}
}
}
从URL读取图片
通过URL对象可以直接读取网络图片,同样使用ImageIO.read方法实现。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.net.URL;
public class URLImageExample {
public static void main(String[] args) {
try {
URL url = new URL("https://example.com/image.png");
BufferedImage image = ImageIO.read(url);
System.out.println("Image loaded from URL");
} catch (Exception e) {
e.printStackTrace();
}
}
}
处理输入流中的图片
当图片数据来自输入流时,可以直接将输入流传递给ImageIO.read方法进行处理。

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
public class StreamImageExample {
public static void main(String[] args) {
try (InputStream is = Files.newInputStream(Paths.get("path/to/image.png"))) {
BufferedImage image = ImageIO.read(is);
System.out.println("Image loaded from stream");
} catch (Exception e) {
e.printStackTrace();
}
}
}
处理Base64编码图片
对于Base64编码的图片字符串,需要先解码为字节数组,再通过ByteArrayInputStream读取。
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.util.Base64;
public class Base64ImageExample {
public static void main(String[] args) {
String base64Image = "data:image/png;base64,..."; // 替换为实际的Base64字符串
String imageData = base64Image.split(",")[1];
byte[] imageBytes = Base64.getDecoder().decode(imageData);
try (ByteArrayInputStream bis = new ByteArrayInputStream(imageBytes)) {
BufferedImage image = ImageIO.read(bis);
System.out.println("Image loaded from Base64");
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用JavaFX加载图片
在JavaFX应用中,可以使用Image类加载图片文件或URL。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class JavaFXImageExample extends Application {
@Override
public void start(Stage primaryStage) {
Image image = new Image("file:path/to/image.jpg");
ImageView imageView = new ImageView(image);
StackPane root = new StackPane();
root.getChildren().add(imageView);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
注意事项
处理图片时需要捕获可能的IOException,因为文件可能不存在或格式不受支持。ImageIO支持的格式可以通过ImageIO.getReaderFormatNames()查看。
图片路径可以是相对路径或绝对路径。相对路径相对于项目根目录或当前工作目录。
对于大图片文件,可能需要考虑内存限制和性能优化。






