Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1146442
  • 博文数量: 103
  • 博客积分: 1897
  • 博客等级: 上尉
  • 技术积分: 1717
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-19 21:02
文章分类

全部博文(103)

文章存档

2013年(19)

2012年(84)

分类: Java

2012-09-01 15:32:52

最近要做一个web项目,里面涉及到对图片的缩放和裁剪。原理是这样的,首先先对图片进行缩放,然后,将缩放之后的图片进行裁剪,里面涉及到许多java图片api的应用,代码如下。
//参数分别对应了员图片的地址,目的图片的地址,裁剪的坐标和缩放的坐标
 public  void abscut(final String srcImageFile,String savedImagePath, final int x, final int y, final int destWidth,
                final int destHeight,final int finalWidth,final int finalHeight) {
       
                Image img;
                ImageFilter cropFilter;
                // 读取源图像
                BufferedImage bi;
                try {
                    bi = ImageIO.read(new File(srcImageFile));
                     int srcWidth = bi.getWidth(); // 源图宽度
                        int srcHeight = bi.getHeight(); // 源图高度
                      
                        System.out.println("srcWidth= " + srcWidth + "\tsrcHeight= "
                                + srcHeight);
                       
                            Image image = bi.getScaledInstance(finalWidth, finalHeight,Image.SCALE_DEFAULT);//获取缩放后的图片大小
                            cropFilter = new CropImageFilter(x, y, destWidth, destHeight);
                            img = Toolkit.getDefaultToolkit().createImage(
                                    new FilteredImageSource(image.getSource(), cropFilter));
                            BufferedImage tag = new BufferedImage(destWidth, destHeight,
                                    BufferedImage.TYPE_INT_RGB);
                            Graphics g = tag.getGraphics();
                            g.drawImage(img, 0, 0, null); // 绘制截取后的图
                            g.dispose();
                           
                            ImageIO.write(tag, getExtention(srcImageFile), new File(savedImagePath));
                                 // 输出为文件
                                //再次进行缩放
                       
                       
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
              
          
        
            }

  /**
         * 功能:提取文件名的后缀
         *
         * @param fileName
         * @return
         */
        private static  String getExtention(String fileName) {
            int pos = fileName.lastIndexOf(".");
            return fileName.substring(pos + 1);
        }

阅读(5169) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~