直播商城源码,Java实现上传图片压缩缩略图

直播商城源码,Java实现上传图片压缩缩略图

 

1
package com.wwp.utils;<br> <br>import java.awt.Graphics;<br>import java.awt.Image;<br>import java.awt.image.BufferedImage;<br>import java.io.File;<br>import java.io.IOException;<br>import java.math.BigDecimal;<br>import java.math.MathContext;<br>import java.util.ArrayList;<br> <br>import javax.imageio.ImageIO;<br> <br>public class ImgScal {<br> <br>  <br>  <br>  <br>  /*** <br>   * 按指定的比例缩放图片 <br>   * <br>   * @param sourceImagePath <br>   *      源地址 <br>   * @param destinationPath <br>   *      改变大小后图片的地址 <br>   * @param scale <br>   *      缩放比例,如1.2 <br>   */<br>  public static void scaleImage(String sourceImagePath, <br>      String destinationPath, double scale,String format) { <br>  <br>    File file = new File(sourceImagePath); <br>    BufferedImage bufferedImage; <br>    try { <br>      bufferedImage = ImageIO.read(file); <br>      int width = bufferedImage.getWidth(); <br>      int height = bufferedImage.getHeight(); <br>  <br>      width = parseDoubleToInt(width * scale); <br>      height = parseDoubleToInt(height * scale); <br>  <br>      Image image = bufferedImage.getScaledInstance(width, height, <br>          Image.SCALE_SMOOTH); <br>      BufferedImage outputImage = new BufferedImage(width, height, <br>          BufferedImage.TYPE_INT_RGB); <br>      Graphics graphics = outputImage.getGraphics(); <br>      graphics.drawImage(image, 0, 0, null); <br>      graphics.dispose(); <br>  <br>      ImageIO.write(outputImage, format, new File(destinationPath)); <br>    } catch (IOException e) { <br>      System.out.println("scaleImage方法压缩图片时出错了"); <br>      e.printStackTrace(); <br>    } <br>  <br>  } <br>  <br>  /*** <br>   * 将图片缩放到指定的高度或者宽度 <br>   * @param sourceImagePath 图片源地址 <br>   * @param destinationPath 压缩完图片的地址 <br>   * @param width 缩放后的宽度 <br>   * @param height 缩放后的高度 <br>   * @param auto 是否自动保持图片的原高宽比例 <br>   * @param format 图图片格式 例如 jpg <br>   * image.SCALE_SMOOTH //平滑优先<br> image.SCALE_FAST//速度优先<br> image.SCALE_AREA_AVERAGING //区域均值<br> image.SCALE_REPLICATE //像素复制型缩放<br> image.SCALE_DEFAULT //默认缩放模式<br>   */<br>  public static boolean scaleImageWithParams(String sourceImagePath, <br>      String destinationPath, int width, int height, boolean auto,String format) { <br>  File file =null;<br>    try { <br>     file = new File(sourceImagePath); <br>    BufferedImage bufferedImage = null; <br>    bufferedImage = ImageIO.read(file); <br>      if (auto) { <br>        ArrayList<Integer> paramsArrayList = getAutoWidthAndHeight(bufferedImage,width,height); <br>        width = paramsArrayList.get(0); <br>        height = paramsArrayList.get(1); <br>        System.out.println("自动调整比例,width="+width+" height="+height); <br>      } <br>      <br>    Image image = bufferedImage.getScaledInstance(width, height, <br>        Image.SCALE_REPLICATE); <br>    BufferedImage outputImage = new BufferedImage(width, height, <br>        BufferedImage.SCALE_REPLICATE); <br>    Graphics graphics = outputImage.getGraphics(); <br>    graphics.drawImage(image, 0, 0, null); <br>    graphics.dispose(); <br>    ImageIO.write(outputImage, format, new File(destinationPath)); <br>    } catch (Exception e) { <br>      System.out.println("scaleImageWithParams方法压缩图片时出错了"); <br>      e.printStackTrace(); <br>      return false; <br>    }finally {<br>    if (file!=null&&file.exists()) {<br>     file.delete();<br>}<br>    }<br>return true; <br>      <br>      <br>  } <br>  <br>  /** <br>   * 将double类型的数据转换为int,四舍五入原则 <br>   * <br>   * @param sourceDouble <br>   * @return <br>   */<br>  private static int parseDoubleToInt(double sourceDouble) { <br>    int result = 0; <br>    result = (int) sourceDouble; <br>    return result; <br>  } <br>    <br>  /*** <br>   * <br>   * @param bufferedImage 要缩放的图片对象 <br>   * @param width_scale 要缩放到的宽度 <br>   * @param height_scale 要缩放到的高度 <br>   * @return 一个集合,第一个元素为宽度,第二个元素为高度 <br>   */<br>  private static ArrayList<Integer> getAutoWidthAndHeight(BufferedImage bufferedImage,int width_scale,int height_scale){ <br>    ArrayList<Integer> arrayList = new ArrayList<Integer>(); <br>    int width = bufferedImage.getWidth(); <br>    int height = bufferedImage.getHeight(); <br>    double scale_w =getDot2Decimal( width_scale,width); <br>      <br>    System.out.println("getAutoWidthAndHeight width="+width + "scale_w="+scale_w); <br>    double scale_h = getDot2Decimal(height_scale,height); <br>    if (scale_w<scale_h) { <br>      arrayList.add(parseDoubleToInt(scale_w*width)); <br>      arrayList.add(parseDoubleToInt(scale_w*height)); <br>    } <br>    else { <br>      arrayList.add(parseDoubleToInt(scale_h*width)); <br>      arrayList.add(parseDoubleToInt(scale_h*height)); <br>    } <br>    return arrayList; <br>      <br>  } <br>    <br>    <br>  /*** <br>   * 返回两个数a/b的小数点后三位的表示 <br>   * @param a <br>   * @param b <br>   * @return <br>   */<br>  public static double getDot2Decimal(int a,int b){ <br>      <br>    BigDecimal bigDecimal_1 = new BigDecimal(a); <br>    BigDecimal bigDecimal_2 = new BigDecimal(b); <br>    BigDecimal bigDecimal_result = bigDecimal_1.divide(bigDecimal_2,new MathContext(4)); <br>    Double double1 = new Double(bigDecimal_result.toString()); <br>    System.out.println("相除后的double为:"+double1); <br>    return double1; <br>  } <br>  <br> <br>}

以上就是 直播商城源码,Java实现上传图片压缩缩略图,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2021-08-10 教你实现一对一直播系统源码自定义图形层次系统
2021-08-10 实现一对一直播软件源码控制台下载进度效果
2021-08-10 Eclipse实现直播视频app源码图片模糊化
点击右上角即可分享
微信分享提示