读取图片

通过Toolkit

可以通过Toolkit工具从本地,网络或内存获取图片

  • Image Toolkit.getDefaultToolkit().getImage(String filename)
  • Image Toolkit.getDefaultToolkit().getImage(URL url)
  • Image Toolkit.getDefaultToolkit().createImage(byte[] imageData)

通过ImageIO

方法:

  • BufferedImage ImageIO.read(File input)
  • ImageIO.read(URL input)
  • ImageIO.read(InputStream input)

一般用这种方法

ImageIO常用方法

  • int getWidth(): 获取图片宽度
  • int getHeight()
  • int getWidth(ImageObserver observer)
  • int getHeight(ImageObserver observer)
  • setRGB(int x, int y, int rgb): 设置图片在(x, y)处像素
  • getRGB(int x, int y): 获取像素
  • setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize):startx,starty是左上角,w和h是宽和高,offset是rgbarray偏移量。scansize是每一行在数组内长度,一般取w。
  • int[] getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
  • BufferedImage getSubimage (int x, int y, int w, int h): 剪裁图片
  • Image getScaledInstance(int width, int height, int hints):图片缩放,生成的是Image,如果想变成BufferedImage,可以创建一个同样大小的BufferedImage,然后绘制进去。hints是缩放算法,取值如下:
    • SCALE_AREA_AVERAGING: 使用 Area Averaging 图像缩放算法;
    • SCALE_DEFAULT: 使用默认的图像缩放算法;
    • SCALE_FAST: 选择一种图像缩放算法,在这种缩放算法中,缩放速度比缩放平滑度具有更高的优先级;
    • SCALE_REPLICATE: 使用 ReplicateScaleFilter 类中包含的图像缩放 算法;
    • SCALE_SMOOTH: 选择图像平滑度比缩放速度具有更高优先级的图像缩放算法。

在图片上绘制文字等

  • Graphics2D createGraphics(): 创建绘制图片的画布
  • Graphics getGraphics(): 获得画布

保存图片

  • ImageIO.write(RenderedImage im, String formatName, File output):RenderedImage可以是BufferedImage,format是图片格式,例如”jpg”等。output是输出文件
  • ImageIO.write(RenderedImage im, String formatName, OutputStream output):这里的output是输出位置,可以输出到内存或文件中。
public class Main {

public static void main(String[] args) throws Exception {
// 获取屏幕尺寸
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

// 创建需要截取的矩形区域
Rectangle rect = new Rectangle(0, 0, screenSize.width, screenSize.height);

// 截屏操作
BufferedImage bufImage = new Robot().createScreenCapture(rect);

// 保存截取的图片
ImageIO.write(bufImage, "PNG", new File("capture.png"));
}

}