久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java實(shí)現(xiàn)壓縮圖片且不改變?cè)瓐D尺寸

      java實(shí)現(xiàn)壓縮圖片且不改變?cè)瓐D尺寸

      需求:

      大于2MB的圖片需要壓縮到2MB以下,且不改變?cè)瓐D的尺寸。

      (推薦教程:java入門教程)

      引入依賴:

              <dependency>             <groupId>net.coobird</groupId>             <artifactId>thumbnailator</artifactId>             <version>0.4.8</version>         </dependency>

      附件實(shí)體類:

      @Builder @NoArgsConstructor @AllArgsConstructor @Data public class FileCO {     /**      * 附件字節(jié)流      */     private byte[] fileContent;      /**      * 附件OID      */     private UUID attachmentOid; }

      (視頻教程推薦:java視頻教程)

      圖片實(shí)體類:

      @Builder @NoArgsConstructor @AllArgsConstructor @Data public class ImageInfo {      /**      * 圖片字節(jié)流      */     private byte[] imageBytes;      /**      * 圖片是否進(jìn)行壓縮      */     private Boolean compressFlag;      /**      * 圖片寬度      */     private Integer width;      /**      * 圖片高度      */     private Integer height; }

      圖片壓縮工具類:

      @Slf4j public class ImageUtils {      /**      * 合法圖片大小為2MB      */     private static final Long LEGAL_IMAGE_SIZE = 1024 * 2L;      /**      * 圖片壓縮 當(dāng)圖片大小大于2MB進(jìn)行等比例壓縮      * 不修改圖片尺寸進(jìn)行壓縮      *      * @param fileCO      * @return      */     public static ImageInfo compressImageForScale(FileCO fileCO) throws IOException {         byte[] imageBytes = fileCO.getFileContent();         UUID attachmentOid = fileCO.getAttachmentOid();         try {             BufferedImage sourceImage = ImageIO.read(new ByteArrayInputStream(imageBytes));             //高度             int height = sourceImage.getHeight();             //寬度             int width = sourceImage.getWidth();             if (imageBytes.length <= 0 || imageBytes.length < LEGAL_IMAGE_SIZE * 1024) {                 return ImageInfo.builder()                         .imageBytes(imageBytes)                         .width(width)                         .height(height)                         .compressFlag(false)                         .build();             }             long srcSize = imageBytes.length;             double accuracy = getAccuracy(srcSize / 1024);              while (imageBytes.length > LEGAL_IMAGE_SIZE * 1024) {                 ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(imageBytes.length);                 Thumbnails.of(inputStream)                         .scale(1f)                         .outputQuality(accuracy)                         .toOutputStream(outputStream);                 imageBytes = outputStream.toByteArray();             }             log.info("【圖片壓縮】附件OID={} | 圖片原大小={}kb | 壓縮后大小={}kb",                     attachmentOid, srcSize / 1024, imageBytes.length / 1024);             return ImageInfo.builder()                     .imageBytes(imageBytes)                     .width(width)                     .height(height)                     .compressFlag(true)                     .build();         } catch (Exception e) {             log.error("【圖片壓縮】msg=圖片壓縮失敗!", e);             throw e;         }     }      /**      * 計(jì)算壓縮精度      *      * @param size      * @return      */     private static double getAccuracy(long size) {         double accuracy;         //圖片大小小于4M,壓縮精度為0.44;否則精度為0.4         if (size <= 2048 * 2) {             accuracy = 0.44;         } else {             accuracy = 0.4;         }         return accuracy;     } }

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)