在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

java中的图片按比例缩放功能

2017-2-7 13:41| 发布者: zhangjf| 查看: 485| 评论: 0

摘要: java中的图片按比例缩放功能 1. 按固定长宽进行缩放 /* * 图片缩放,w,h为缩放的目标宽度和高度 * src为源文件目录,dest为缩放后保存目录 */ public static void zoomImage(String src,String de ...
java中的图片按比例缩放功能 1. 按固定长宽进行缩放
  1. /*
  2. * 图片缩放,w,h为缩放的目标宽度和高度
  3. * src为源文件目录,dest为缩放后保存目录
  4. */
  5. public static void zoomImage(String src,String dest,int w,int h) throws Exception {
  6. double wr=0,hr=0;
  7. File srcFile = new File(src);
  8. File destFile = new File(dest);
  9. BufferedImage bufImg = ImageIO.read(srcFile); //读取图片
  10. Image Itemp = bufImg.getScaledInstance(w, h, bufImg.SCALE_SMOOTH);//设置缩放目标图片模板
  11. wr=w*1.0/bufImg.getWidth(); //获取缩放比例
  12. hr=h*1.0 / bufImg.getHeight();
  13. AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(wr, hr), null);
  14. Itemp = ato.filter(bufImg, null);
  15. try {
  16. ImageIO.write((BufferedImage) Itemp,dest.substring(dest.lastIndexOf(".")+1), destFile); //写入缩减后的图片
  17. } catch (Exception ex) {
  18. ex.printStackTrace();
  19. }
  20. }
复制代码
2. 按固定文件大小进行缩放
  1. /*
  2. * 图片按比率缩放
  3. * size为文件大小
  4. */
  5. public static void zoomImage(String src,String dest,Integer size) throws Exception {
  6. File srcFile = new File(src);
  7. File destFile = new File(dest);
  8. long fileSize = srcFile.length();
  9. if(fileSize < size * 1024) //文件大于size k时,才进行缩放
  10. return;
  11. Double rate = (size * 1024 * 0.5) / fileSize; // 获取长宽缩放比例
  12. BufferedImage bufImg = ImageIO.read(srcFile);
  13. Image Itemp = bufImg.getScaledInstance(bufImg.getWidth(), bufImg.getHeight(), bufImg.SCALE_SMOOTH);
  14. AffineTransformOp ato = new AffineTransformOp(AffineTransform.getScaleInstance(rate, rate), null);
  15. Itemp = ato.filter(bufImg, null);
  16. try {
  17. ImageIO.write((BufferedImage) Itemp,dest.substring(dest.lastIndexOf(".")+1), destFile);
  18. } catch (Exception ex) {
  19. ex.printStackTrace();
  20. }
复制代码

来自: http://segmentfault.com/a/1190000004253565

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-9 10:38

Copyright 2015-2025 djqfx

返回顶部