利用Java截取图片例子

今天需要把图片截取以后 , 再利用百度的图片识别转成文本 .

查了一下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);

未完待续... 



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Java 的 BufferedImage 类来截取图片,同时可以使用 Graphics2D 类来设置 DPI。具体实现可以参考以下代码: ```java // 读取图片 BufferedImage image = ImageIO.read(new File("image.jpg")); // 截取图片 BufferedImage subImage = image.getSubimage(x, y, width, height); // 设置 DPI Graphics2D g2d = subImage.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); g2d.setRenderingHint(RenderingHints.KEY_RESOLUTION_VARIANT, RenderingHints.VALUE_RESOLUTION_VARIANT_SIZE_FIT); g2d.setRenderingHint(RenderingHints.KEY_RESOLUTION_DPI, dpi); // 保存图片 ImageIO.write(subImage, "jpg", new File("subImage.jpg")); ``` 注意:上述代码中的 x、y、width、height、dpi 都需要根据具体情况进行设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值