java 等比例 改变图片的质量(等大小压缩图片)

转载 2016年06月01日 16:37:06
 /**
     * @param originalFile  原文件
     * @param resizedFile  压缩目标文件
     * @param quality  压缩质量(越高质量越好)
     * @param scale  缩放比例;  1等大.
     * @throws IOException
     */
    public static void resize(File originalFile, File resizedFile,double scale, float quality) throws IOException {  
        ImageIcon ii = new ImageIcon(originalFile.getCanonicalPath());  
        Image i = ii.getImage();  
        int iWidth = (int) (i.getWidth(null)*scale);  
        int iHeight = (int) (i.getHeight(null)*scale); 
        //在这你可以自定义 返回图片的大小 iWidth iHeight
        Image resizedImage = i.getScaledInstance(iWidth,iHeight, Image.SCALE_SMOOTH);  
        // 获取图片中的所有像素
        Image temp = new ImageIcon(resizedImage).getImage();  
        // 创建缓冲
        BufferedImage bufferedImage = new BufferedImage(temp.getWidth(null),  
                temp.getHeight(null), BufferedImage.TYPE_INT_RGB);  
        // 复制图片到缓冲流中
        Graphics g = bufferedImage.createGraphics();  
        // 清除背景并开始画图
        g.setColor(Color.white);  
        g.fillRect(0, 0, temp.getWidth(null), temp.getHeight(null));  
        g.drawImage(temp, 0, 0, null);  
        g.dispose();
        // 柔和图片.  
        float softenFactor =0.05f;  
        float[] softenArray = { 0, softenFactor, 0, softenFactor,  
                1 - (softenFactor * 4), softenFactor, 0, softenFactor, 0 };  
        Kernel kernel = new Kernel(3, 3, softenArray);  
        ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);  
        bufferedImage = cOp.filter(bufferedImage, null);  
        FileOutputStream out = new FileOutputStream(resizedFile);  
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
        JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bufferedImage);  
        param.setQuality(quality, true);  
        encoder.setJPEGEncodeParam(param);  
        encoder.encode(bufferedImage);
        bufferedImage.flush();
        out.close();
    } 

相关文章推荐

java 图片像素质量压缩与图片长宽缩放

今天找到的这个方法比以前项目用到的方法更好,这里记录下,方便日后使用! /** * 缩放图片(压缩图片质量,改变图片尺寸) * 若原图宽度小于新宽度,则宽度不变! * ...

图片处理降低失真

之前写过关于图片生成缩略图的东西,后来发现压缩效果不是太好,已经变形;研究了并收索代码用以下处理方法极大提高图片质量 package util.info.piccut; import java.a...

java中图片按质量压缩的再一次小结

研究了那么久的图片压缩原理之后 虽然没能带回一个自己用JAVA实现的图片压缩软件 但是总算是自己终于对图片压缩有了个清晰的了解   好了,废话不多说 继续上次关于远程监控系统中用UDP广播图...
  • kfhzy
  • kfhzy
  • 2011年08月21日 10:11
  • 13368

JAVA中如何设置图片(图标)自适应Jlable等组件的大小

一、问题: 一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件 ...

图片的等比例压缩和质量压缩,图片转化成FILE

先在的图片上传都是会事先将压缩好的图片上传给服务器,1.是为了节省用户的流量  2.是为了减少服务器的压力 以下常用的2种压缩方式 // 按比例压缩 private Bitmap getimage(S...

PHP等比例缩放图片大小压缩图片空间

/** * 等比例压缩图片,支持图片格式jpg,jpeg,png * @param string $dst_dir 上传的文件夹 * @param string $dst_name 上传后的名称,...

java指定宽度等比例压缩图片

最近做项目需要用到图片压缩技术,在这里整理下做个分享。 需要注意的是如果要压缩的图片太大,就需要修改JDK的默认内存了。废话不多说,直接上代码。 import java.aw...

java 等比例压缩图片(背景不会成黑的)

-下载所需jar包:http://pan.baidu.com/s/1o8y86MI -1.新建一个工具类import java.awt.Color; import java.awt.Graphics...

Java压缩图片util,可等比例宽高不失真压缩,也可直接指定压缩后的宽高

package com.yipai.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 等比例 改变图片的质量(等大小压缩图片)
举报原因:
原因补充:

(最多只允许输入30个字)