今天需要把图片截取以后 , 再利用百度的图片识别转成文本 .
查了一下ImageIO的api , 很简单, 但是不常用, 记录一下, 方便查阅
// 图片读取路径 String inputPath = "D:\\workspace\\test\\target\\classes\\data1.jpg"; // 图片输出路径 String outPath = "D:\\workspace\\test\\target\\classes\\data3.jpg"; // 1.得到图片的输入流 FileInputStream input = new FileInputStream(inputPath); // 2.用工具类ImageIO得到BufferedImage对象,将图片信息放入缓存区 BufferedImage image = ImageIO.read(input); // 3.设置截图图片的(x坐标,y坐标,width宽,height高)信息,并返回截切的新图片,存入缓存区 BufferedImage result = image.getSubimage(190, 150, 438, 450); // 4.得到图片的输出流 FileOutputStream out = new FileOutputStream(outPath); // 5. 将缓存区的图片,利用ImageIO工具类输出到指定位置. ImageIO.write(result, "jpg", out);
高级一点的处理图片的方式, 使用ImageReader . 因为不需要吧图片放入缓存区再操作, 可以节省内存, 功能也更强大.
// 1.得到ImageReader对象,支持多种文件格式 Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg"); ImageReader imageReader = it.next(); // 2.获得图片的ImageInputStream对象 File file = new File(inputPath); ImageInputStream in = ImageIO.createImageInputStream(file); // 3.将输入源的流注入到ImageReader对象中, 使其关联.对于只能储存一张图片的文件,传入true即可 imageReader.setInput(in, true); // 4.利用ImageReader操作图片,得到第一张图片(仅有一张)的宽 int width = imageReader.getWidth(0); System.out.println(width);
未完待续...