添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
import org.apache.commons.codec.binary.Base64; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.annotation.PostConstruct; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import java.util.HashMap; import java.util.Map; import java.util.UUID; //import com.sun.image.codec.jpeg.JPEGCodec; //import com.sun.image.codec.jpeg.JPEGImageEncoder; @Component public class ImgTool {    public static String imgPath ;    @Value("${userconfig.img-path}")    public  String imgPaths ;    @PostConstruct     public void init() {       imgPath = imgPaths;      * 指定图片宽度和高度和压缩比例对图片进行压缩      * @param imgsrc      *            源图片地址      * @param imgdist      *            目标图片地址      * @param widthdist      *            压缩后图片的宽度      * @param heightdist      *            压缩后图片的高度      * @param rate      *            压缩的比例    public static void reduceImg(String imgsrc, String imgdist, int widthdist, int heightdist, Float rate) {         try {             File srcfile = new File(imgsrc);             // 检查图片文件是否存在             if (!srcfile.exists()) {                 System.out.println("文件不存在");             // 如果比例不为空则说明是按比例压缩             if (rate != null && rate > 0) {                 //获得源图片的宽高存入数组中                 int[] results = getImgWidthHeight(srcfile);                 if (results == null || results[0] == 0 || results[1] == 0) {                     return;                 } else {                     //按比例缩放或扩大图片大小,将浮点型转为整型                     widthdist = (int) (results[0] * rate);                     heightdist = (int) (results[1] * rate);             // 开始读取文件并进行压缩             Image src = ImageIO.read(srcfile);             // 构造一个类型为预定义图像类型之一的 BufferedImage             BufferedImage tag = new BufferedImage((int) widthdist, (int) heightdist, BufferedImage.TYPE_INT_RGB);             //绘制图像  getScaledInstance表示创建此图像的缩放版本,返回一个新的缩放版本Image,按指定的width,height呈现图像             //Image.SCALE_SMOOTH,选择图像平滑度比缩放速度具有更高优先级的图像缩放算法。             tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist, Image.SCALE_SMOOTH), 0, 0, null);             //创建文件输出流             FileOutputStream out = new FileOutputStream(imgdist);             //将图片按JPEG压缩,保存到out中             //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);             //encoder.encode(tag);             //关闭文件输出流             ImageIO.write(tag, "jpg", out);             out.close();         } catch (Exception ef) {             ef.printStackTrace();      * 获取图片宽度和高度      * @param      * @return 返回图片的宽度     public static int[] getImgWidthHeight(File file) {         InputStream is = null;         BufferedImage src = null;         int result[] = { 0, 0 };         try {             // 获得文件输入流             is = new FileInputStream(file);             // 从流里将图片写入缓冲图片区             src = ImageIO.read(is);             result[0] =src.getWidth(null); // 得到源图片宽             result[1] =src.getHeight(null);// 得到源图片高             is.close();  //关闭输入流         } catch (Exception ef) {             ef.printStackTrace();         return result;      * 将图片转换成Base64编码      * @param imgFile 待处理图片      * @return     public static String getImgStr(String imgFile) {         // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理         InputStream in = null;         byte[] data = null;         // 读取图片字节数组         try {             in = new FileInputStream(imgFile);             data = new byte[in.available()];             in.read(data);             in.close();         } catch (IOException e) {             e.printStackTrace();         return Base64.encodeBase64String(data);     public static Map uploadImg(MultipartFile img) {        Map data = new HashMap();        String contentType = img.getContentType(); // 获取文件的类型        long size=img.getSize();        System.out.println("文件大小为:"+size);       System.out.println("文件类型为:" + contentType);       String originalFilename = img.getOriginalFilename(); // 获取文件的原始名称         // 获取文件扩展名,如 abc.de.jpg,就获取 jpg         String extensionName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);         // 设置上传文件的文件名,防止命名冲突导致覆盖         String uploadFilename = UUID.randomUUID().toString() + "." + extensionName;       // 判断文件是否为空       if (!img.isEmpty()) {          File targetImg = new File(imgPath);          // 判断文件夹是否存在          if (!targetImg.exists()) {             targetImg.mkdirs(); // 级联创建文件夹          try {             // 开始保存图片             FileOutputStream outputStream = new FileOutputStream(imgPath+"/" + uploadFilename);             outputStream.write(img.getBytes());             outputStream.flush();             outputStream.close(); //          while (size>203776) { //             reduceImg(imgPath+"/"+ originalFilename, imgPath+"/"+ originalFilename, 0, 0,(float)0.6); //             File distfile = new File(imgPath+"/"+ originalFilename); //             size= distfile.length(); //             System.out.println("压缩文件大小为:"+size); //          }             data.put("code",1);             data.put("src",uploadFilename);             //return 1;          } catch (IOException e) {             data.put("code",0);             data.put("src","");             e.printStackTrace();             //return 0;       }else {          data.put("code",0);          data.put("src","");          //return 0;       return data;

扫描二维码推送至手机访问。

版权声明:本文由 HUYANG 发布,如需转载请注明出处。

本文链接: http://hmilly.cn/?id=15

分享给朋友:

get、post自用类

package com.csxxjs.jxpk.web.tools; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; im...

get、post自用类(2)

package com.csxxjs.jxpk.web.tools; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.htt...

对接建行支付平台

package com.csxxjs.jxpk.web.service; import com.alibaba.fastjson.JSONArray; import com.csxxjs.jxpk.web.dao.WzgMedicalPayWechatDAO;...

支付宝小程序my.rsa-java加解密

package com.jeesite.modules.tools; import org.junit.Test; import org.springframework.beans.factory.annotation.Value; import&nbsp...

pdf生成类(html转pdf)

package com.csxxjs.sldingshi.tool; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfName; import com.itextpdf.text...

生成柱状图

com.csxxjs.sldingshi.tool; lombok.extern.slf4j.; org.jfree.chart.ChartFactory; org.jfree.chart.ChartUtilities; org.jfree.chart.JFreeChart; org....