1.重新调整图片到合适尺寸(有压缩图片功能)

/*** * 功能描述: <br>* 〈调整图像到固定大小〉** @param srcImageFile  源图像文件地址* @param descImageFile 缩放后的图像地址* @param width         缩放后的宽度* @param height        缩放后的高度* @param isPadding     是否补白* */
public final static void changeSize(String srcImageFile, String descImageFile, int width, int height, boolean isPadding) {try {// 缩放比例double ratio = 0.0;File file = new File(srcImageFile);BufferedImage bufferedImage = ImageIO.read(file);Image image = bufferedImage.getScaledInstance(width, height, bufferedImage.SCALE_SMOOTH);// 计算缩放比例if (bufferedImage.getHeight() > bufferedImage.getWidth()) {ratio = (new Integer(height)).doubleValue() / bufferedImage.getHeight();} else {ratio = (new Integer(width)).doubleValue() / bufferedImage.getWidth();}AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(ratio, ratio), null);image = op.filter(bufferedImage, null);// 是否需要补白if (isPadding) {BufferedImage tempBufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics2D graphics2d = tempBufferedImage.createGraphics();graphics2d.setColor(Color.white);graphics2d.fillRect(0, 0, width, height);if (width == image.getWidth(null)) {graphics2d.drawImage(image, 0, (height - image.getHeight(null)) / 2, image.getWidth(null), image.getHeight(null), Color.white, null);} else {graphics2d.drawImage(image, (width - image.getWidth(null)) / 2, 0, image.getWidth(null), image.getHeight(null), Color.white, null);}graphics2d.dispose();image = tempBufferedImage;}ImageIO.write((BufferedImage) image, "png", new File(descImageFile));} catch (IOException e) {e.printStackTrace();}
}

2.合并两张PNG图片

/*** * 功能描述: <br>* 〈利用画布生成新的图片〉** @param backImage 背景图文件地址* @param srcImage  前景图文件地址* @param descImage 生成图文件地址* @return* */
public static void mergeImage(String backImage, String srcImage, String descImage) {try {int offset = 0;BufferedImage backBufferedImage = ImageIO.read(new File(backImage));BufferedImage srcBufferedImage = ImageIO.read(new File(srcImage));// 输出图片宽度int width = backBufferedImage.getWidth() + offset;// 输出图片高度int height = backBufferedImage.getWidth() + offset;BufferedImage descBufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);Graphics2D graphics2d = (Graphics2D) descBufferedImage.getGraphics();graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);// 往画布上添加图片,并设置边距graphics2d.drawImage(backBufferedImage, null, 0, 0);graphics2d.drawImage(srcBufferedImage, null, 175, 175);graphics2d.dispose();// 输出新图片ImageIO.write(descBufferedImage, "png", new File(descImage));} catch (Exception e) {e.printStackTrace();}
}

3.测试代码

public static void main(String[] args) throws IOException {// 重新调整b.png尺寸 生成d.pngchangeSize("d:\\b.png", "d:\\d.png", 640, 640, false);// 合并a.png+d.png->c.pngmergeImage("d:\\a.png", "d:\\d.png", "d:\\c.png");
}

4.测试结果

+=

Java调整图片大小合并PNG图片生成ICON(保持背景透明)相关推荐

  1. JAVA改变图片大小,将图片改为Jpg格式

    JAVA改变图片大小,将图片改为Jpg格式 package util;import javax.imageio.ImageIO; import java.awt.*; import java.awt. ...

  2. 视频直播源码,插入图片、删除图片、设置图片大小、提取图片

    视频直播源码,插入图片.删除图片.设置图片大小.提取图片 1.插入图片 Document对象有一个add_paragraph()方法插入图片,只需要传入路径或者字节流即可,实际上它也是调用段落的Run ...

  3. jquery实现上传图片及图片大小验证、图片预览效果代码

    jquery实现上传图片及图片大小验证.图片预览效果代码 jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture() ...

  4. 批量处理图形大小如何更改图片大小尺寸修改图片视频教程ps学习ps教程ps基础新教程

    批量处理图形大小如何更改图片大小尺寸修改图片视频教程ps学习ps教程ps基础新教程

  5. 图片大小自动按比例缩小图片不变形 解决方法

    图片大小自动按比例缩小图片不变形 解决方法 参考文章: (1)图片大小自动按比例缩小图片不变形 解决方法 (2)https://www.cnblogs.com/liujunchen/p/7598649 ...

  6. gd库处理图片(将正方形转换圆形) (调整 头像大小)(文字图片合并)(创建画布)

    /*** 生成缩略图* $imgSrc 图片源路径* $resize_width 图片宽度* $resize_height 图片高度* $dstimg 缩略图路径* $isCut 是否剪切图片*/ f ...

  7. java验证图片大小_java 校验图片的大小、尺寸、比例

    import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.i ...

  8. python给指定目录所有图片添加水印logo,批量生成替换文件,自适应图片大小添加到图片正中间

    首先需要安装PIL,pip install 2.x的版本安装 pip insall PIL 3.x的python版本安装 pip install pillow 实现功能步骤: 1.读取指定目录jpg或 ...

  9. 神经网络输入图片大小,神经网络提取图片特征

    BP神经网络输入输出格式问题 在你的代码基础上说了.clc;clear;closeall;p=load('');%你问题最后说的数据文件名跟这个不同. p1=p';t=[1];%这个输出(Target ...

最新文章

  1. java 安装界面广告_用javascript实现仿163的js广告向下挤压页面的效果
  2. 吴恩达成立新公司,签约富士康,专注制造业AI变革(附视频)
  3. QlikView Script -组合键处理
  4. 老王有两个孩子,已知至少有一个孩子是在星期二出生的男孩。问:两个孩子都是男孩的概率是多大?
  5. Exchange企业实战技巧(27)邮件中使用数字签名和邮件加密功能
  6. 光伏产业的发展推动太阳能组件技术进步
  7. python 流式计算框架_流式计算的三种框架:Storm、Spark和Flink
  8. 奖品兑现 – 我家没有好茶饭,只有《编程之美》送亲人
  9. 两条边延长角会有什么变化_田园易经:什么样的风水环境会影响人的健康?
  10. [zsh] restart a zsh process
  11. Struts2框架中s:if标签和s:set标签小结
  12. AD——修改域用户的密码
  13. 兰州市智能交通实现智慧城市 智能化立体车库有效缓解停车难
  14. es6数组初始化_说一下自己常用的es6的功能
  15. 计算机是根据用户名,根据用户名移动计算机账号
  16. lisp型材库_STMX 1.3.2 发布,高性能的 Common Lisp 库
  17. springboot系列(十八):如何Windows安装redis?你玩过么|超级详细,建议收藏
  18. 调手表(蓝桥杯2018年B组真题)
  19. Google analytics如何统计网站信息?
  20. julia常用矩阵函数_Julia 多维数组

热门文章

  1. 打造全球TOD典范城市!成都准备这么干
  2. java学习之路8——Java集合框架
  3. android app签名详解
  4. Worthington 脱氧核糖核酸酶说明书
  5. (36个知识点)关于《浏览器基本原理与实践》的读后总结
  6. 线程、多线程与线程池总结
  7. 内部排序(五)快速排序(上)- 概述与选择枢轴
  8. 磁盘存储链式的B树与B+树(上课笔记)
  9. 读书笔记 | 牧羊少年奇幻之旅
  10. 什么是大数据采集?大数据采集的过程是什么?