[Java] java压缩图片 jpg 用java改变图片的存储大小 →→→→→进入此内容的聊天室

来自 , 2021-02-07, 写在 Java, 查看 146 次.
URL http://www.code666.cn/view/4f16c818
  1. public static boolean compressPic(String srcFilePath, String descFilePath) throws IOException {
  2.         File file = null;
  3.         BufferedImage src = null;
  4.         FileOutputStream out = null;
  5.         ImageWriter imgWrier;
  6.         ImageWriteParam imgWriteParams;
  7.  
  8.         // 指定写图片的方式为 jpg
  9.         imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
  10.         imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(
  11.                 null);
  12.         // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
  13.         imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
  14.         // 这里指定压缩的程度,参数qality是取值0~1范围内,
  15.         imgWriteParams.setCompressionQuality((float) 1);
  16.         imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
  17.         ColorModel colorModel =ImageIO.read(new File(srcFilePath)).getColorModel();// ColorModel.getRGBdefault();
  18.         // 指定压缩时使用的色彩模式
  19. //        imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
  20. //                colorModel, colorModel.createCompatibleSampleModel(16, 16)));
  21.         imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
  22.                 colorModel, colorModel.createCompatibleSampleModel(16, 16)));
  23.  
  24.         try {
  25.             if (isBlank(srcFilePath)) {
  26.                 return false;
  27.             } else {
  28.                 file = new File(srcFilePath);System.out.println(file.length());
  29.                 src = ImageIO.read(file);
  30.                 out = new FileOutputStream(descFilePath);
  31.  
  32.                 imgWrier.reset();
  33.                 // 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何
  34.                 // OutputStream构造
  35.                 imgWrier.setOutput(ImageIO.createImageOutputStream(out));
  36.                 // 调用write方法,就可以向输入流写图片
  37.                 imgWrier.write(null, new IIOImage(src, null, null),
  38.                         imgWriteParams);
  39.                 out.flush();
  40.                 out.close();
  41.             }
  42.         } catch (Exception e) {
  43.             e.printStackTrace();
  44.             return false;
  45.         }
  46.         return true;
  47.     }
  48.  
  49. public static boolean isBlank(String string) {
  50.         if (string == null || string.length() == 0 || string.trim().equals("")) {
  51.             return true;
  52.         }
  53.         return false;
  54.     }

回复 "java压缩图片 jpg 用java改变图片的存储大小"

这儿你可以回复上面这条便签

captcha