亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

縮放圖片工具類,創(chuàng)建縮略圖、伸縮圖片比例

系統(tǒng) 1690 0

支持將Image的寬度、高度縮放到指定width、height,并保存在指定目錄
通過目標(biāo)對(duì)象的大小和標(biāo)準(zhǔn)(指定)大小計(jì)算出圖片縮小的比例
可以設(shè)置圖片縮放質(zhì)量,并且可以根據(jù)指定的寬高縮放圖片

源碼:

        
          package
        
         com.hoo.util;
      
        ?
      
        
          import
        
         java.awt.Image;
      
        
          import
        
         java.awt.image.BufferedImage;
      
        
          import
        
         java.io.File;
      
        
          import
        
         java.io.FileOutputStream;
      
        
          import
        
         java.io.IOException;
      
        
          import
        
         java.net.MalformedURLException;
      
        
          import
        
         java.net.URL;
      
        
          import
        
         javax.imageio.ImageIO;
      
        
          import
        
         com.sun.image.codec.jpeg.ImageFormatException;
      
        
          import
        
         com.sun.image.codec.jpeg.JPEGCodec;
      
        
          import
        
         com.sun.image.codec.jpeg.JPEGEncodeParam;
      
        
          import
        
         com.sun.image.codec.jpeg.JPEGImageEncoder;
      
        ?
      
        
          /**
        
      
        
           * <b>function:</b> 縮放圖片工具類,創(chuàng)建縮略圖、伸縮圖片比例
        
      
        
           * @author hoojo
        
      
        
           * @createDate 2012-2-3 上午10:08:47
        
      
        
           * @file ScaleImageUtils.java
        
      
        
           * @package com.hoo.util
        
      
        
           * @blog http://blog.csdn.net/IBM_hoojo
        
      
        
           * http://hoojo.cnblogs.com
        
      
        
           * @email hoojo_@126.com
        
      
        
           * @version 1.0
        
      
        
           */
        
      
        
          public
        
        
          abstract
        
        
          class
        
         ScaleImageUtils {
      
        ?
      
        
          private
        
        
          static
        
        
          final
        
        
          float
        
         DEFAULT_SCALE_QUALITY = 1f;
      
        
          private
        
        
          static
        
        
          final
        
         String DEFAULT_IMAGE_FORMAT = 
        
          ".jpg"
        
        ; 
        
          // 圖像文件的格式 
        
      
        
          private
        
        
          static
        
        
          final
        
         String DEFAULT_FILE_PATH = 
        
          "C:/temp-"
        
        ;
      
      
        
          /**
        
      
        
               * <b>function:</b> 設(shè)置圖片壓縮質(zhì)量枚舉類;
        
      
        
               * Some guidelines: 0.75 high quality、0.5  medium quality、0.25 low quality
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午11:31:45
        
      
        
               * @file ScaleImageUtils.java
        
      
        
               * @package com.hoo.util
        
      
        
               * @project JQueryMobile
        
      
        
               * @blog http://blog.csdn.net/IBM_hoojo
        
      
        
               * @email hoojo_@126.com
        
      
        
               * @version 1.0
        
      
        
               */
        
      
        
          public
        
        
          enum
        
         ImageQuality {
      
                max(1.0f), high(0.75f), medium(0.5f), low(0.25f);
      
      
        
          private
        
         Float quality;
      
        
          public
        
         Float getQuality() {
      
        
          return
        
        
          this
        
        .quality;
      
                }
      
                ImageQuality(Float quality) {
      
        
          this
        
        .quality = quality;
      
                }
      
            }
      
      
        
          private
        
        
          static
        
         Image image;
      
      
        
          /**
        
      
        
               * <b>function:</b> 通過目標(biāo)對(duì)象的大小和標(biāo)準(zhǔn)(指定)大小計(jì)算出圖片縮小的比例
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-6 下午04:41:48
        
      
        
               * @param targetWidth 目標(biāo)的寬度
        
      
        
               * @param targetHeight 目標(biāo)的高度
        
      
        
               * @param standardWidth 標(biāo)準(zhǔn)(指定)寬度
        
      
        
               * @param standardHeight 標(biāo)準(zhǔn)(指定)高度
        
      
        
               * @return 最小的合適比例
        
      
        
               */
        
      
        
          public
        
        
          static
        
        
          double
        
         getScaling(
        
          double
        
         targetWidth, 
        
          double
        
         targetHeight, 
        
          double
        
         standardWidth, 
        
          double
        
         standardHeight) {
      
        
          double
        
         widthScaling = 0d;
      
        
          double
        
         heightScaling = 0d;
      
        
          if
        
         (targetWidth > standardWidth) {
      
                    widthScaling = standardWidth / (targetWidth * 1.00d);
      
                } 
        
          else
        
         {
      
                    widthScaling = 1d;
      
                }
      
        
          if
        
         (targetHeight > standardHeight) {
      
                    heightScaling = standardHeight / (targetHeight * 1.00d);
      
                } 
        
          else
        
         {
      
                    heightScaling = 1d;
      
                }
      
        
          return
        
         Math.min(widthScaling, heightScaling);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 將Image的寬度、高度縮放到指定width、height,并保存在savePath目錄
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-6 下午04:54:35
        
      
        
               * @param width 縮放的寬度
        
      
        
               * @param height 縮放的高度
        
      
        
               * @param savePath 保存目錄
        
      
        
               * @param targetImage 即將縮放的目標(biāo)圖片
        
      
        
               * @return 圖片保存路徑、名稱
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          int
        
         width, 
        
          int
        
         height, String savePath, Image targetImage) 
        
          throws
        
         ImageFormatException, IOException {
      
                width = Math.max(width, 1);
      
                height = Math.max(height, 1);
      
                BufferedImage image = 
        
          new
        
         BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
      
                image.getGraphics().drawImage(targetImage, 0, 0, width, height, null);
      
      
        
          if
        
         (savePath == null || 
        
          ""
        
        .equals(savePath)) {
      
                    savePath = DEFAULT_FILE_PATH + System.currentTimeMillis() + DEFAULT_IMAGE_FORMAT;
      
                }
      
      
                FileOutputStream fos = 
        
          new
        
         FileOutputStream(
        
          new
        
         File(savePath));
      
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
      
                encoder.encode(image);
      
        ?
      
                image.flush();
      
                fos.flush();
      
                fos.close();
      
      
        
          return
        
         savePath;
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 可以設(shè)置圖片縮放質(zhì)量,并且可以根據(jù)指定的寬高縮放圖片
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午11:01:27
        
      
        
               * @param width 縮放的寬度
        
      
        
               * @param height 縮放的高度
        
      
        
               * @param quality 圖片壓縮質(zhì)量,最大值是1; 使用枚舉值:{@link ImageQuality}
        
      
        
               *             Some guidelines: 0.75 high quality、0.5  medium quality、0.25 low quality
        
      
        
               * @param savePath 保存目錄
        
      
        
               * @param targetImage 即將縮放的目標(biāo)圖片
        
      
        
               * @return 圖片保存路徑、名稱
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          int
        
         width, 
        
          int
        
         height, Float quality, String savePath, Image targetImage) 
        
          throws
        
         ImageFormatException, IOException {
      
                width = Math.max(width, 1);
      
                height = Math.max(height, 1);
      
                BufferedImage image = 
        
          new
        
         BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
      
                image.getGraphics().drawImage(targetImage, 0, 0, width, height, null);
      
      
        
          if
        
         (savePath == null || 
        
          ""
        
        .equals(savePath)) {
      
                    savePath = DEFAULT_FILE_PATH + System.currentTimeMillis() + DEFAULT_IMAGE_FORMAT;
      
                }
      
      
                FileOutputStream fos = 
        
          new
        
         FileOutputStream(
        
          new
        
         File(savePath));
      
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
      
      
                JPEGEncodeParam encodeParam = JPEGCodec.getDefaultJPEGEncodeParam(image); 
      
        
          if
        
         (quality == null || quality <= 0) {
      
                    quality = DEFAULT_SCALE_QUALITY;
      
                }
      
        
          /** 設(shè)置圖片壓縮質(zhì)量 */
        
      
                encodeParam.setQuality(quality, true);  
      
                encoder.encode(image, encodeParam);  
      
        ?
      
                image.flush();
      
                fos.flush();
      
                fos.close();
      
      
        
          return
        
         savePath;
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 通過指定大小和圖片的大小,計(jì)算出圖片縮小的合適大小
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-6 下午05:53:10
        
      
        
               * @param width 指定的寬度
        
      
        
               * @param height 指定的高度
        
      
        
               * @param image 圖片文件
        
      
        
               * @return 返回寬度、高度的int數(shù)組
        
      
        
               */
        
      
        
          public
        
        
          static
        
        
          int
        
        [] getSize(
        
          int
        
         width, 
        
          int
        
         height, Image image) {
      
        
          int
        
         targetWidth = image.getWidth(null);
      
        
          int
        
         targetHeight = image.getHeight(null);
      
        
          double
        
         scaling = getScaling(targetWidth, targetHeight, width, height);
      
        
          long
        
         standardWidth = Math.round(targetWidth * scaling);
      
        
          long
        
         standardHeight = Math.round(targetHeight * scaling);
      
        
          return
        
        
          new
        
        
          int
        
        [] { Integer.parseInt(Long.toString(standardWidth)), Integer.parseInt(String.valueOf(standardHeight)) };
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 通過指定的比例和圖片對(duì)象,返回一個(gè)放大或縮小的寬度、高度
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:27:59
        
      
        
               * @param scale 縮放比例
        
      
        
               * @param image 圖片對(duì)象
        
      
        
               * @return 返回寬度、高度
        
      
        
               */
        
      
        
          public
        
        
          static
        
        
          int
        
        [] getSize(
        
          float
        
         scale, Image image) {
      
        
          int
        
         targetWidth = image.getWidth(null);
      
        
          int
        
         targetHeight = image.getHeight(null);
      
        
          long
        
         standardWidth = Math.round(targetWidth * scale);
      
        
          long
        
         standardHeight = Math.round(targetHeight * scale);
      
        
          return
        
        
          new
        
        
          int
        
        [] { Integer.parseInt(Long.toString(standardWidth)), Integer.parseInt(String.valueOf(standardHeight)) };
      
            }
      
      
        
          public
        
        
          static
        
        
          int
        
        [] getSize(
        
          int
        
         width, Image image) {
      
        
          int
        
         targetWidth = image.getWidth(null);
      
        
          int
        
         targetHeight = image.getHeight(null);
      
        
          long
        
         height = Math.round((targetHeight * width) / (targetWidth * 1.00f));
      
        
          return
        
        
          new
        
        
          int
        
        [] { width, Integer.parseInt(String.valueOf(height)) };
      
            }
      
      
        
          public
        
        
          static
        
        
          int
        
        [] getSizeByHeight(
        
          int
        
         height, Image image) {
      
        
          int
        
         targetWidth = image.getWidth(null);
      
        
          int
        
         targetHeight = image.getHeight(null);
      
        
          long
        
         width = Math.round((targetWidth * height) / (targetHeight * 1.00f));
      
        
          return
        
        
          new
        
        
          int
        
        [] { Integer.parseInt(String.valueOf(width)), height };
      
            }
      
      
        
          /**
        
      
        
               * 
        
      
        
               * <b>function:</b> 將指定的targetFile圖片文件的寬度、高度大于指定width、height的圖片縮小,并保存在savePath目錄
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-6 下午04:57:02
        
      
        
               * @param width 縮小的寬度
        
      
        
               * @param height 縮小的高度
        
      
        
               * @param savePath 保存目錄
        
      
        
               * @param targetImage 改變的目標(biāo)圖片
        
      
        
               * @return 圖片保存路徑、名稱
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          int
        
         width, 
        
          int
        
         height, String savePath, File targetFile) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetFile);
      
        
          int
        
        [] size = getSize(width, height, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * 
        
      
        
               * <b>function:</b> 將指定的targetURL網(wǎng)絡(luò)圖片文件的寬度、高度大于指定width、height的圖片縮小,并保存在savePath目錄
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-6 下午04:57:07
        
      
        
               * @param width 縮小的寬度
        
      
        
               * @param height 縮小的高度
        
      
        
               * @param savePath 保存目錄
        
      
        
               * @param targetImage 改變的目標(biāo)圖片
        
      
        
               * @return 圖片保存路徑、名稱
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          int
        
         width, 
        
          int
        
         height, String savePath, URL targetURL) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetURL);
      
        
          int
        
        [] size = getSize(width, height, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 將一個(gè)本地的圖片文件按照指定的比例進(jìn)行縮放
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:29:18
        
      
        
               * @param scale 縮放比例
        
      
        
               * @param savePath 保存文件路徑、名稱
        
      
        
               * @param targetFile 本地圖片文件
        
      
        
               * @return 新的文件名稱
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          float
        
         scale, String savePath, File targetFile) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetFile);
      
        
          int
        
        [] size = getSize(scale, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 將一個(gè)網(wǎng)絡(luò)圖片文件按照指定的比例進(jìn)行縮放
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:30:56
        
      
        
               * @param scale 縮放比例
        
      
        
               * @param savePath 保存文件路徑、名稱
        
      
        
               * @param targetFile 本地圖片文件
        
      
        
               * @return 新的文件名稱
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          float
        
         scale, String savePath, URL targetURL) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetURL);
      
        
          int
        
        [] size = getSize(scale, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 按照固定寬度進(jìn)行等比縮放本地圖片
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:49:56
        
      
        
               * @param width 固定寬度
        
      
        
               * @param savePath 保存路徑、名稱
        
      
        
               * @param targetFile 本地目標(biāo)文件
        
      
        
               * @return 返回保存路徑
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          int
        
         width, String savePath, File targetFile) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetFile);
      
        
          int
        
        [] size = getSize(width, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 按照固定寬度進(jìn)行等比縮放網(wǎng)絡(luò)圖片
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:50:52
        
      
        
               * @param width 固定寬度
        
      
        
               * @param savePath 保存路徑、名稱
        
      
        
               * @param targetFile 本地目標(biāo)文件
        
      
        
               * @return 返回保存路徑
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resize(
        
          int
        
         width, String savePath, URL targetURL) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetURL);
      
        
          int
        
        [] size = getSize(width, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * 
        
      
        
               * <b>function:</b> 按照固定高度進(jìn)行等比縮放本地圖片
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:51:17
        
      
        
               * @param height 固定高度
        
      
        
               * @param savePath 保存路徑、名稱
        
      
        
               * @param targetFile 本地目標(biāo)文件
        
      
        
               * @return 返回保存路徑
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resizeByHeight(
        
          int
        
         height, String savePath, File targetFile) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetFile);
      
        
          int
        
        [] size = getSizeByHeight(height, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b> 按照固定高度進(jìn)行等比縮放網(wǎng)絡(luò)圖片
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-7 上午10:52:23
        
      
        
               * @param height 固定高度
        
      
        
               * @param savePath 保存路徑、名稱
        
      
        
               * @param targetFile 本地目標(biāo)文件
        
      
        
               * @return 返回保存路徑
        
      
        
               * @throws ImageFormatException
        
      
        
               * @throws IOException
        
      
        
               */
        
      
        
          public
        
        
          static
        
         String resizeByHeight(
        
          int
        
         height, String savePath, URL targetURL) 
        
          throws
        
         ImageFormatException, IOException {
      
                image = ImageIO.read(targetURL);
      
        
          int
        
        [] size = getSizeByHeight(height, image);
      
        
          return
        
         resize(size[0], size[1], savePath, image);
      
            }
      
      
        
          /**
        
      
        
               * <b>function:</b>
        
      
        
               * @author hoojo
        
      
        
               * @createDate 2012-2-3 上午10:08:47
        
      
        
               * @param args
        
      
        
               * @throws IOException 
        
      
        
               * @throws MalformedURLException 
        
      
        
               * @throws ImageFormatException 
        
      
        
               */
        
      
        
          public
        
        
          static
        
        
          void
        
         main(String[] args) 
        
          throws
        
         ImageFormatException, MalformedURLException, IOException {
      
      
                System.out.println(ScaleImageUtils.resize(140, 140, null, 
        
          new
        
         URL(
        
          "http://www.open-open.com/lib/images/logo.jpg"
        
        )));
      
                ScaleImageUtils.resize(100, 100, ImageQuality.high.getQuality(), null, ImageIO.read(
        
          new
        
         URL(
        
          "http://www.open-open.com/lib/images/logo.jpg"
        
        )));
      
            }
      
        }
      
        ?
      

縮放圖片工具類,創(chuàng)建縮略圖、伸縮圖片比例


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美日韩北条麻妃一区二区 | 欧美午夜在线观看理论片 | 国产精品免费福利 | 国产高清美女一级毛片久久 | 国产色婷婷 | 噜噜噜天天躁狠狠躁夜夜精品 | 91探花在线视频 | 亚洲区中文字幕 | 亚欧毛片| 99免费在线视频 | 久草在线国产 | caoporm超免费公开视频 | 九九视频只有精品 | 韩国高清不卡一区二区 | 手机在线国产精品 | 日韩影院久久 | 久久久网站 | 欧美日韩综合在线视频免费看 | 亚洲在线视频免费观看 | 国产做受视频激情播放 | 在线免费观看一区二区三区 | 午夜精品aaa国产福利 | 日一区二区三区 | 91精品国产91久久综合 | 亚洲在线播放视频 | 成人性视频免费网站 | 中文字幕 日韩在线 | 国产夫妻久久 | 日韩在线1 | 久久新视频 | 欧美金八天国 | 久久mimi色 | 鲁丝一区| 色视频在线免费 | 国内精品视频成人一区二区 | 在线国产视频 | 奇米第四狠狠777高清秒播 | 亚洲国产高清视频在线观看 | 午夜久久久精品 | 亚洲欧美日韩国产精品 | 久青草国产在线视频_久青草免 |