<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java 代碼

      1 import java.io.*;   
      2 import java.awt.*;   
      3 import java.awt.image.*;   
      4 import java.awt.Graphics;   
      5 import java.awt.color.ColorSpace;   
      6 import javax.imageio.ImageIO;   
      7   
      8 public class ChangeImageSize   
      9 {   
     10     /** *//**  
     11      * 縮放圖像  
     12      * @param srcImageFile 源圖像文件地址  
     13      * @param result       縮放后的圖像地址  
     14      * @param scale        縮放比例  
     15      * @param flag         縮放選擇:true 放大; false 縮小;  
     16      */  
     17     public static void scale(String srcImageFile, String result, int scale, boolean flag)   
     18     {   
     19         try  
     20         {   
     21             BufferedImage src = ImageIO.read(new File(srcImageFile)); // 讀入文件   
     22             int width = src.getWidth(); // 得到源圖寬   
     23             int height = src.getHeight(); // 得到源圖長   
     24             if (flag)   
     25             {   
     26                 // 放大   
     27                 width = width * scale;   
     28                 height = height * scale;   
     29             }   
     30             else  
     31             {   
     32                 // 縮小   
     33                 width = width / scale;   
     34                 height = height / scale;   
     35             }   
     36             Image image = src.getScaledInstance(width, height, Image.SCALE_DEFAULT);   
     37             BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);   
     38             Graphics g = tag.getGraphics();   
     39             g.drawImage(image, 00null); // 繪制縮小后的圖   
     40             g.dispose();   
     41             ImageIO.write(tag, "JPEG"new File(result));// 輸出到文件流   
     42         }   
     43         catch (IOException e)   
     44         {   
     45             e.printStackTrace();   
     46         }   
     47     }   
     48   
     49     /** *//**  
     50      * 圖像切割  
     51      * @param srcImageFile 源圖像地址  
     52      * @param descDir      切片目標文件夾  
     53      * @param destWidth    目標切片寬度  
     54      * @param destHeight   目標切片高度  
     55      */  
     56     public static void cut(String srcImageFile, String descDir, int destWidth, int destHeight)   
     57     {   
     58         try  
     59         {   
     60             Image img;   
     61             ImageFilter cropFilter;   
     62             // 讀取源圖像   
     63             BufferedImage bi = ImageIO.read(new File(srcImageFile));   
     64             int srcWidth = bi.getHeight(); // 源圖寬度   
     65             int srcHeight = bi.getWidth(); // 源圖高度   
     66             if (srcWidth > destWidth && srcHeight > destHeight)   
     67             {   
     68                 Image image = bi.getScaledInstance(srcWidth, srcHeight, Image.SCALE_DEFAULT);   
     69                 destWidth = 200// 切片寬度   
     70                 destHeight = 150// 切片高度   
     71                 int cols = 0// 切片橫向數量   
     72                 int rows = 0// 切片縱向數量   
     73                 // 計算切片的橫向和縱向數量   
     74                 if (srcWidth % destWidth == 0)   
     75                 {   
     76                     cols = srcWidth / destWidth;   
     77                 }   
     78                 else  
     79                 {   
     80                     cols = (int) Math.floor(srcWidth / destWidth) + 1;   
     81                 }   
     82                 if (srcHeight % destHeight == 0)   
     83                 {   
     84                     rows = srcHeight / destHeight;   
     85                 }   
     86                 else  
     87                 {   
     88                     rows = (int) Math.floor(srcHeight / destHeight) + 1;   
     89                 }   
     90                 // 循環建立切片   
     91                 // 改進的想法:是否可用多線程加快切割速度   
     92                 for (int i = 0; i < rows; i++)   
     93                 {   
     94                     for (int j = 0; j < cols; j++)   
     95                     {   
     96                         // 四個參數分別為圖像起點坐標和寬高   
     97                         // 即: CropImageFilter(int x,int y,int width,int height)   
     98                         cropFilter = new CropImageFilter(j * 200, i * 150, destWidth, destHeight);   
     99                         img = Toolkit.getDefaultToolkit().createImage(   
    100                                         new FilteredImageSource(image.getSource(), cropFilter));   
    101                         BufferedImage tag = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);   
    102                         Graphics g = tag.getGraphics();   
    103                         g.drawImage(img, 00null); // 繪制縮小后的圖   
    104                         g.dispose();   
    105                         // 輸出為文件   
    106                         ImageIO.write(tag, "JPEG"new File(descDir + "pre_map_" + i + "_" + j + ".jpg"));   
    107                     }   
    108                 }   
    109             }   
    110         }   
    111         catch (Exception e)   
    112         {   
    113             e.printStackTrace();   
    114         }   
    115     }   
    116   
    117     /** *//**  
    118      * 圖像類型轉換 GIF->JPG GIF->PNG PNG->JPG PNG->GIF(X)  
    119      */  
    120     public static void convert(String source, String result)   
    121     {   
    122         try  
    123         {   
    124             File f = new File(source);   
    125             f.canRead();   
    126             f.canWrite();   
    127             BufferedImage src = ImageIO.read(f);   
    128             ImageIO.write(src, "JPG"new File(result));   
    129         }   
    130         catch (Exception e)   
    131         {   
    132             // TODO Auto-generated catch block   
    133             e.printStackTrace();   
    134         }   
    135     }   
    136   
    137     /** *//**  
    138      * 彩色轉為黑白  
    139      * @param source  
    140      * @param result  
    141      */  
    142     public static void gray(String source, String result)   
    143     {   
    144         try  
    145         {   
    146             BufferedImage src = ImageIO.read(new File(source));   
    147             ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);   
    148             ColorConvertOp op = new ColorConvertOp(cs, null);   
    149             src = op.filter(src, null);   
    150             ImageIO.write(src, "JPEG"new File(result));   
    151         }   
    152         catch (IOException e)   
    153         {   
    154             e.printStackTrace();   
    155         }   
    156     }   
    157   
    158     /** *//**  
    159      * @param args  
    160      */  
    161     public static void main(String[] args)   
    162     {   
    163         scale("c:\\test\\456.jpg","C:\\test\\image1.jpg",2,false);   
    164         cut("c:\\test\\456.jpg","C:\\test\\image2.jpg",64,64);   
    165         gray("c:\\test\\456.jpg","C:\\test\\image4.jpg");   
    166     }   
    167   
    168 }  
    169 
    posted on 2008-11-01 10:56 aisoft 閱讀(1693) 評論(0)  編輯  收藏 所屬分類: J2EE開發技術
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    隨筆檔案(2)

    文章分類(12)

    文章檔案(12)

    收藏夾

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 日本成人在线免费观看| 桃子视频在线观看高清免费完整| 女人18毛片特级一级免费视频| 91久久亚洲国产成人精品性色 | 国产亚洲成av人片在线观看| 最好2018中文免费视频| 亚洲高清免费视频| 免费人人潮人人爽一区二区| 亚洲精品专区在线观看| 成在线人免费无码高潮喷水| 亚洲AV无码国产丝袜在线观看| 免费无码一区二区三区| 亚洲春色在线观看| 永久免费av无码网站韩国毛片| 2020亚洲男人天堂精品| 日韩成全视频观看免费观看高清| 免费亚洲视频在线观看| 国产性爱在线观看亚洲黄色一级片| 亚洲精品黄色视频在线观看免费资源 | 久久国产成人亚洲精品影院| 一级毛片试看60分钟免费播放| 国产亚洲精品线观看动态图| 无码人妻一区二区三区免费看| 亚洲成人福利网站| 狠狠久久永久免费观看| g0g0人体全免费高清大胆视频| 亚洲精品乱码久久久久久蜜桃不卡| 无码国产精品一区二区免费vr| 亚洲理论片在线观看| 处破痛哭A√18成年片免费| 极品美女一级毛片免费| 亚洲av激情无码专区在线播放| 毛片A级毛片免费播放| 免费无码婬片aaa直播表情| 亚洲va国产va天堂va久久| 无码国产精品一区二区免费式影视| 爱情岛论坛亚洲品质自拍视频网站| 在线观看午夜亚洲一区| 免费无码又爽又刺激聊天APP| 九九久久国产精品免费热6| 亚洲今日精彩视频|