HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks
          package com.img;

          import java.awt.Rectangle;
          import java.awt.geom.AffineTransform;
          import java.awt.image.AffineTransformOp;
          import java.awt.image.BufferedImage;
          import java.awt.image.Raster;
          import java.io.File;

          import javax.imageio.ImageIO;

          public class ABMImage {
                /**
                 * 剪切圖片
                 * @param source 源圖片
                 * @param dest 目標圖片
                 * @param x 切點x
                 * @param y 切點y
                 * @param width 要切的寬度
                 * @param height 要切的高度
                 */
                public static void cutFile(File source, File dest,
                        int x, int y, int width, int height) throws Exception{
                    if (!dest.exists())
                        dest.createNewFile();
                    BufferedImage bis = ImageIO.read(source);
                    int w = bis.getWidth();
                    int h = bis.getHeight();
                    if (w < width+x) {
                        width = w - x;
                    }
                    if (h < height+y) {
                        height = h - y;
                    }
                    BufferedImage bf = bis.getSubimage(x,y,width,height);
                    ImageIO.write(bf, "jpeg" , dest);
                }
             
                /**
                 * 縮放圖片
                 * @param source 源圖片
                 * @param dest 目標圖片
                 * @param width 縮放后的寬度
                 * @param height 縮放后的高度
                 */
                public static void reduceImage(File source, File dest, int width, int height)
                    throws Exception{
                    BufferedImage bis = ImageIO.read(source);
                    int w = bis.getWidth();
                    int h = bis.getHeight();
                    double scale = (double)width/w;
                    int disW = 0;
                    int disH = 0;
                    if ((double)height/h > scale) {
                        scale = (double)height/h;
                        disW = (int) ((w*scale - width)/2);
                    } else {
                        disH = (int) ((h*scale - height)/2);
                    }
                    AffineTransform transform = new AffineTransform();
                    transform.setToScale(scale, scale);
                    System.out.println(scale);
                    AffineTransformOp ato = new AffineTransformOp(transform, null);
                    BufferedImage bid = new BufferedImage(width+disW*2, height+disH*2, BufferedImage.TYPE_3BYTE_BGR);
                    ato.filter(bis, bid);
                    if (width+disW*2>bid.getWidth())
                        width = bid.getWidth()-disW*2;
                    if (height+disH*2>bid.getHeight())
                        height = bid.getHeight()-disH*2;
                    BufferedImage bf = bid.getSubimage(disW, disH, width, height);
                    ImageIO.write(bf, "jpeg" , dest);
                }
             
                public static void main(String args[]) {
                    File f = new File("c:/樣品.jpg");
                    File f2 = new File("c:/1234.jpg");
                    try {
                        ABMImage.reduceImage(f, f2, 250, 150);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
          }



          </script>

          posted on 2007-08-13 18:51 helloworld2008 閱讀(425) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 洛隆县| 民县| 昌都县| 集安市| 瑞安市| 治多县| 龙口市| 绥宁县| 洛南县| 海门市| 利川市| 长宁县| 库尔勒市| 萍乡市| 怀集县| 丽江市| 富蕴县| 文山县| 龙门县| 松江区| 大同县| 澄迈县| 渑池县| 双城市| 琼海市| 锡林郭勒盟| 井陉县| 钟祥市| 隆子县| 凤台县| 黑水县| 宜兰市| 同江市| 确山县| 洪雅县| 西乡县| 呼图壁县| 科尔| 高阳县| 康保县| 疏勒县|