`
ttitfly
  • 浏览: 617333 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

图片处理

    博客分类:
  • java
阅读更多

根据帖子:http://www.iteye.com/topic/40971 整理

图片缩小处理

第一种方式缩小后质量很差

第二,三种方式缩小后很好

对图片的缩放一定要用 Image下的 getScaledInstance

Graphics下的 还有 AffineTransform下的 缩放都是针对"图形"而不是"图像"的

图形就是用java类画的线条等简单几何图形

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class Pic {
 
 public static void reduceImg(String imgsrc, String imgdist, int widthdist,  
            int heightdist) {  
        try {  
            File srcfile = new File(imgsrc);  
            if (!srcfile.exists()) {  
                return;  
            }  
            Image src = javax.imageio.ImageIO.read(srcfile);  
            int width = src.getWidth(null);  
            int height = src.getHeight(null);  
 
            if (width == widthdist && height == heightdist) {  
                FileUtils.copyFile(new File(imgsrc), new File(imgdist));  
                return;  
            }  
              
 
            double ws = (double) widthdist / (double) width;  
              
            double hs = (double) heightdist / (double) height;  
              
            BufferedImage tag=null;  
 
            tag = new BufferedImage((int) widthdist, (int) heightdist,  
                    BufferedImage.TYPE_INT_RGB);  
              
            Graphics2D g2d=(Graphics2D)tag.getGraphics();   

第一种方式
              
//            AffineTransform at=AffineTransform.getScaleInstance(ws,hs);  
//            RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON);      
//            g2d.transform(at);  
//            qualityHints.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);    
//            qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);     
//
//            qualityHints.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);  
//               
//            g2d.setRenderingHints(qualityHints);    
 // g2d.drawImage(src, 0, 0,  null); 

第2种方式
            g2d.drawImage(src.getScaledInstance(widthdist, heightdist,  Image.SCALE_SMOOTH), 0, 0,  null);   
 

第3种方式
//          /         tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist,  Image.SCALE_AREA_AVERAGING), 0, 0,  null);
            FileOutputStream out = new FileOutputStream(imgdist);  
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
            encoder.encode(tag);  
            out.close();  
 
        } catch (IOException ex) {  
            ex.printStackTrace();  
        }  
    }  
 
 
 public static void main(String[] args)
 {
  Pic.reduceImg("c:/pic/1.gif","c:/pic/11.gif",48,48);
 }


}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics