随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0
数据加载中……

使用Java等比例缩放图像

本文为原创,如需转载,请注明作者和出处,谢谢!

    缩放图像的基本原理是创建一个目标大小的画布,然后读取源图像,并将该图像绘制这个画布上。为了使程序通用,源图像和缩放后的目标图像应用分别使用InputStream和OutputStream来表示,代码如下:
    public static void scaleImage(InputStream imgInputStream,
            OutputStream imgOutputStream, 
int scale)
    {
        
try
        {

            Image src 
= javax.imageio.ImageIO.read(imgInputStream);
            
int width = (int) (src.getWidth(null* scale / 100.0);
            
int height = (int) (src.getHeight(null* scale / 100.0);
            BufferedImage bufferedImage 
= new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);

             bufferedImage.getGraphics().drawImage(
                    src.getScaledInstance(width, height, Image.SCALE_SMOOTH),
                    
00null);
            JPEGImageEncoder encoder 
= JPEGCodec
                    .createJPEGEncoder(imgOutputStream);
            encoder.encode( bufferedImage);

        }
        
catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    其中scale参数表示缩放比例,1至100,当然,也可以大于100,那就是放大图像了。但要注意,放得太大会失真的。
    当然,也可以重构scaleImage方法,使其可以接收图像文件名,代码如下:

    public static void scaleImage(String imgSrc, String imgDist, int scale)
    {
        
try
        {
            File file 
= new File(imgSrc);
            
if (!file.exists())
            {
                
return;
            }
            InputStream is 
= new FileInputStream(file);
            OutputStream os 
= new FileOutputStream(imgDist);
            scaleImage(is, os, scale);
            is.close();
            os.close();
        }
        
catch (Exception e)
        {

        }
    }

    下面的代码按15%缩放
scaleImage("E:\\pictures\\test.jpg""e:\\test1.jpg"15);





Android开发完全讲义(第2版)(本书版权已输出到台湾)

http://product.dangdang.com/product.aspx?product_id=22741502



Android高薪之路:Android程序员面试宝典 http://book.360buy.com/10970314.html


新浪微博:http://t.sina.com.cn/androidguy   昵称:李宁_Lining

posted on 2010-04-16 15:11 银河使者 阅读(3140) 评论(4)  编辑  收藏 所属分类: java 原创

评论

# re: 使用Java等比例缩放图像  回复  更多评论   

dpi自动变成96了,对于图片质量要求高的。
可以参考一下这里:
http://www.java-forums.org/java-applets/13546-image-resizing-dpi.html
2010-04-16 16:17 | rox

# re: 使用Java等比例缩放图像  回复  更多评论   

源图像和缩放后的目标图像应用分别使用InputStream和OutputStream来表示
2010-04-17 11:36 | 俏物悄语

# re: 使用Java等比例缩放图像  回复  更多评论   

当有大量图片的时候,此方法性能可能会是个障碍。
2010-04-18 01:21 | .Sun

# re: 使用Java等比例缩放图像  回复  更多评论   

环境按时打算的
2010-04-18 15:27 | 乐蜂网专卖店

只有注册用户登录后才能发表评论。


网站导航: