随笔 - 312, 文章 - 14, 评论 - 1393, 引用 - 0

导航

<2010年4月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

公告

关注我的新浪微博

我的著作









常用链接

留言簿(126)

我参与的团队

随笔分类(818)

随笔档案(310)

文章分类(1)

文章档案(8)

相册

ADSL、3G查询

CSDN

eclipse

ibm

Java EE

Linux

Web

云服务

代理网站

关注的网站

协议

喜欢的Blog

国内广告平台

图书出版

在线培训

开发工具

微博客户端

手机铃声

操作系统

  • ReactOS
  • 一个与windowXP/2003兼容的操作系统

数学

文件格式

源码资源

移动(Mobile)

编程语言

英语学习

最新随笔

搜索

  •  

积分与排名

  • 积分 - 1969795
  • 排名 - 6

最新评论

阅读排行榜

评论排行榜

使用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 银河使者 阅读(3280) 评论(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 | 乐蜂网专卖店

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


网站导航: