直播商城源码,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实现上传图片压缩缩略图,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2021-08-10 教你实现一对一直播系统源码自定义图形层次系统
2021-08-10 实现一对一直播软件源码控制台下载进度效果
2021-08-10 Eclipse实现直播视频app源码图片模糊化