通过BufferedImage对图片进行缩放和裁剪

读取图片

//读取图片  通过JAVA自带的ImageIO里面的read方法
BufferedImage bufImage = ImageIO.read(File input);
BufferedImage bufImage = ImageIO.read(URL input);
BufferedImage bufImage = ImageIO.read(InputStream input);
BufferedImage bufImage = ImageIO.read(ImageInputStream input)

保存图片

/***  image:RenderedImage 接口的实现类, BufferedImage 实现了 RenderedImage 接口*  formatName: 保存的图片格式的名称*  output: 结果输出位置*/
ImageIO.write(RenderedImage image, String formatName, File output);
ImageIO.write(RenderedImage image, String formatName, OutputStream output);

图片缩放:

Image getScaledInstance(int width, int height, int hints);

在图片上绘制几何图形、文字、图片(贴图):

// 创建图片的画布
Graphics2D createGraphics();// 获取图片的画布, 此方法实际上内部调用了 createGraphics() 方法, Graphics2D 继承自 Graphics
Graphics getGraphics();/** 获取到 Graphics2D 对象后, 调用它的绘图方法,便可在原图片上绘制几何图形、文字、图片(贴图)等。* 获取到的画布是新创建的, 使用完后需要调用 Graphics 的 dispose() 方法销毁。*/

示例代码,从网络上读取图片并进行裁剪或缩放:

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class TestImg {public static void cutUrl(String imageUrl, int width, int height) throws Exception {URL url = new URL(imageUrl);HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();/**设置请求方式为"GET"*/httpConn.setRequestMethod("GET");/**超时响应时间为5秒*/httpConn.setConnectTimeout(5 * 1000);httpConn.connect();InputStream is = httpConn.getInputStream();// 读取图片BufferedImage bufImage = ImageIO.read(is);BufferedImage tag=new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);//缩放图片tag.getGraphics().drawImage(bufImage, 0, 0, width, height, null);File imgFile = new File("bb.jpg");ImageIO.write(tag, "JPEG", imgFile);/*** 裁剪图片* @param x   起始x坐标* @param y   起始y坐标* @param w  要裁剪的图片的宽度* @param h  要裁剪的图片的高度*/BufferedImage bufferedImage = bufImage.getSubimage(0,0,300,300);File imgCutFile = new File("bb2.jpg");ImageIO.write(bufferedImage, "JPEG", imgCutFile);//缩放图片BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = image.createGraphics();Image img = bufImage.getScaledInstance(width , height, Image.SCALE_DEFAULT);graphics.drawImage(img, 0, 0,null);//一定要释放资源graphics.dispose();File imgZoomFile = new File("bb3.jpg");ImageIO.write(image, "JPEG", imgZoomFile);}public static void main(String[] args) {try {TestImg.cutUrl("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1589025741669&di=147c6c43977670ff0ac906d89f2e0584&imgtype=0&src=http%3A%2F%2Fimg2.imgtn.bdimg.com%2Fit%2Fu%3D3173572552%2C3353378735%26fm%3D214%26gp%3D0.jpg",300,300);} catch (Exception e) {e.printStackTrace();}}
}

Java 通过BufferedImage缩放和裁剪图片相关推荐

  1. jQuery 缩放 旋转 裁剪图片 Image Cropper

    A simple jQuery image cropping plugin. Demo cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持图片旋转, ...

  2. ImageUtils.java:图片处理工具类[裁剪/图片水印/文字水印/缩放补白/Base64加密解密]

    用到的jar包: commons-beanutils-1.8.0.jar commons-codec-1.10.jar package com.zhenzhigu.commons.util;   im ...

  3. java裁剪图片_java实现图片的缩放和裁剪

    最近要做一个web项目,里面涉及到对图片的缩放和裁剪.原理是这样的,首先先对图片进行缩放,然后,将缩放之后的图片进行裁剪,里面涉及到许多java图片api的应用,代码如下. //参数分别对应了员图片的 ...

  4. java实现图片固定长宽的缩放和裁剪

    java实现图片固定长宽的缩放和裁剪 实现对aa文件夹进行深层遍历并将图片按长600宽400进行缩放和裁剪 import java.awt.Color; import java.awt.Graphic ...

  5. Java图片操作 --- 图片的读取、绘制、缩放、裁剪、保存

    本文链接: http://blog.csdn.net/xietansheng/article/details/78453570 Java Swing 图形界面开发(目录) 1. 读取图片 方法一: 通 ...

  6. java以目标尺寸按原图片像素比缩放切割图片

    2019独角兽企业重金招聘Python工程师标准>>> 需求:原始图片缩放为目标尺寸后,要求缩放后的图片保持原图片的样式不改变,但是缩放后图片的四边可以裁减. 原理:将待裁剪图片宽高 ...

  7. Java工具类 - 根据左上角坐标和右下角坐标裁剪图片

    package cut;import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;import javax.imageio.ImageI ...

  8. java -- cropper裁剪图片并base64上传 移动端简单示例

    前言 cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持图片旋转,支持触摸屏设备,支持canvas,并且支持跨浏览器使用. cropper有两种方式 ...

  9. Java修改图片大小尺寸图片缩放(URL图片和本地图片)

    方式一:使用Image.getScaledInstance 使用jdk的awt包下的Image.getScaledInstance实现图片的缩放.好处是无需引入第三方jar,缺点是会稍微有点模糊. 工 ...

最新文章

  1. python xlwings下载_Python学习随笔:使用xlwings读取和操作Execl文件
  2. finereport连接oracle_FINEREPORT连接远程ORACLE数据库
  3. 最强一句话大全 www.sh3llc0de.com
  4. 视频 | BIM数据中心模型
  5. c#随机数生成编号_使用C#生成随机密码(纯数字或字母)和随机卡号(数字与字母组合)...
  6. hadoop容灾能力测试
  7. java学习(76):GUL单选按钮和复选按钮
  8. Ext JS 3.2.0发布(转)
  9. matlab 纽马克 激励,newmark (纽马克)计算结果动力学响应的matlab程序
  10. redhat linux ssh服务,Redhat6开启ssh
  11. 辉芒微IO单片机FT60F011A-RB
  12. ubuntu安装zlib
  13. 使用tortoisegit clone通过ssh clone远程库:invalid gitfile format: D:\Program Files\TortoiseGit\bin\Tortois“
  14. 贵州大学计算机考研资料汇总
  15. 基本概念 - 二维关系表
  16. 【腾讯云】知识文档收集
  17. 笔记本电脑不读移动硬盘
  18. 论文翻译:基于端到端的可训练神经网络基于图像的序列识别及其在场景文本识别中的应用
  19. 读《赤脚医生手册》有感之葱豉汤
  20. nmon analyser——生成 AIX 性能报告的免费工具

热门文章

  1. 1017. A除以B
  2. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解
  3. Java语言中,finally一定会执行吗?
  4. Acme Cad Dwg 转换 设置字体
  5. 第二篇 基础篇—燃烧吧!我的雌雄双股剑! 第5回 二弟呀,面子工程很重要
  6. 【随机区组设计和析因设计的区别】
  7. 报错:无法嵌入来自程序集“e:\Microsoft.Office.Interop.Word.dll”的互操作类型,因为它缺少“ImportedFromTypeLibAttribute”特性或“Prim
  8. k8s简介以及linux环境下的详细安装步骤
  9. 交换机的116个知识点 (1)
  10. Notpad++下载和插件安装