`

图片等比例缩放

    博客分类:
  • Java
 
阅读更多
http://my.oschina.net/vitoh/blog/491478



import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 
import javax.swing.ImageIcon;
 
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
 
/**
 * 图片等比例缩放工具
 * @Author vitoHuang
 * @Time 2015年8月12日
 * @Mark
 */
public class ImageUtil {
     
    /**
     * 
     * @param originalFile   原图片文件
     * @param resizedFile    缩放后文件
     * @throws IOException
     */
    public static void resize(File originalFile, File resizedFile)throws IOException {
        resize(originalFile,resizedFile,640);
    }
     
    /**
     * 
     * @param originalFile   原图片文件
     * @param resizedFile    缩放后文件
     * @param newWidth       缩放后宽度 单位:px
     * @throws IOException
     */
    public static void resize(File originalFile, File resizedFile,int newWidth)throws IOException {
        resize(originalFile, resizedFile, newWidth,1F);
    }
     
    /**
     * 
     * @param originalFile  原图片文件
     * @param resizedFile    缩放后文件
     * @param newWidth       缩放后宽度 单位:px
     * @param quality        质量 0-1之间
     * @throws IOException
     */
    public static void resize(File originalFile, File resizedFile,int newWidth, float quality) throws IOException {
         
        if (quality > 1)  throw new IllegalArgumentException("质量必须是0和1之间");  
         
        ImageIcon ii = new ImageIcon(originalFile.getCanonicalPath()); 
        Image i = ii.getImage();  
        Image resizedImage = null;  
         
        int iWidth = i.getWidth(null);  
        int iHeight = i.getHeight(null);  
         
        //根据提供的新图片宽度
        if (iWidth > iHeight) {  
            resizedImage = i.getScaledInstance(newWidth, (newWidth * iHeight) / iWidth, Image.SCALE_SMOOTH);  
        }else{  
            resizedImage = i.getScaledInstance((newWidth * iWidth) / iHeight,newWidth, 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);  
   
        // 编码图像作为JPEG数据流 
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
   
        JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bufferedImage);  
   
        param.setQuality(quality, true);  
   
        encoder.setJPEGEncodeParam(param);  
        encoder.encode(bufferedImage);  
    }
     
}
分享到:
评论

相关推荐

    图片等比例缩放个人最优化版(IE6,IE7,FF)

    《图片等比例缩放技术详解及优化实践》 在网页设计中,图片的展示效果往往直接影响用户体验。尤其是当图片尺寸不一,或者需要在不同设备上展示时,等比例缩放成为一种必不可少的技术手段。本文将深入探讨如何实现...

    CSS3的background-size属性,实现响应式式图片等比例缩放。

    CSS3的`background-size`属性就是实现响应式图片等比例缩放的关键技术之一,它解决了传统方法中图片在不同屏幕尺寸下显示不适应的问题。 `background-size`属性允许我们自定义背景图片的大小,而不仅仅是局限于图片...

    图片等比例缩放问题

    ### 图片等比例缩放问题解析 在处理图像时,经常需要对图片进行等比例缩放,以适应不同的显示需求或优化存储空间。本篇文章将详细介绍如何实现图片的等比例缩放,包括缩放的基本原理、实现方法以及注意事项。 ####...

    js实现图片等比例缩放

    在网页设计中,图片的等比例缩放是一个常见的需求,特别是在响应式布局中,为了保持图像的原始比例,避免拉伸或压缩导致变形,我们通常会利用JavaScript来动态调整图片大小。本文将深入探讨如何使用JavaScript实现...

    jquery图片插件设置图片等比例缩放

    "jQuery图片插件设置图片等比例缩放"是一个实用的功能,能够确保图片在不同尺寸的屏幕上保持其原始比例,从而避免图片变形,提供良好的视觉效果。jQuery作为一款强大的JavaScript库,提供了丰富的功能来处理DOM操作...

    图片等比例缩放,动态加载

    图片等比例缩放和动态加载是两种常见的优化技术,它们可以提高页面加载速度,节省用户流量,同时保持图片的视觉一致性。以下将详细介绍这两种技术及其实现方法。 一、图片等比例缩放 等比例缩放是指在不改变图片宽...

    图片等比例缩放代码,图片等比例缩放JS代码,图片缩放代码

    在网页设计和开发中,图片的处理是一项非常重要的工作,特别是在响应式布局中,确保图片能够根据屏幕尺寸等比例缩放是必要的。本篇将详细讲解如何使用JavaScript实现图片等比例缩放,以及相关的编程知识。 一、图片...

    图片等比例缩放,网页图片处理方法

    ### 图片等比例缩放——网页图片处理方法 在网页设计与开发中,为了确保页面布局的美观性和响应性,经常需要对图片进行等比例缩放处理。这不仅可以提高用户体验,还能有效减少页面加载时间。本文将详细介绍如何利用...

    jquery图片等比例缩放

    有时候我们需要图片在不同的屏幕尺寸下保持等比例缩放,以确保图片的视觉效果不被破坏。jQuery,一个广泛使用的JavaScript库,提供了方便的API来实现这样的功能。本文将深入探讨如何利用jQuery实现图片的等比例缩放...

    JS图片等比例缩放方法完整示例

    为了保持图片的原始比例,避免拉伸或压缩导致失真,开发者通常会使用等比例缩放的方法。本篇将详细介绍如何使用JavaScript实现图片的等比例缩放,并通过一个完整的示例来解析其工作原理。 首先,我们需要理解等比例...

    jQuery图片等比例缩放截取显示代码.zip

    "jQuery图片等比例缩放截取显示代码" 是一种解决图片在不同尺寸屏幕下不失真的技术,它利用jQuery库和一个名为jQThumb的插件实现。这里我们将深入探讨这个技术的工作原理、实现方式以及其优势。 首先,jQuery是一个...

    图片等比例缩放.txt 图片等比例缩放.txt

    ### 图片等比例缩放知识点解析 #### 一、知识点概述 在网页设计与开发过程中,经常需要处理图片的大小调整问题。为了保持图片的视觉效果不失真,等比例缩放成为了常用的一种处理方式。本篇文章将从一个具体的...

    JavaScript实现网页图片等比例缩放 图片等比例缩放

    ### JavaScript 实现网页图片等比例缩放 在网页设计与开发过程中,经常遇到的一个问题是确保图片能在不同设备、不同分辨率的屏幕上保持良好的显示效果。图片的等比例缩放是其中一种解决方案,它能够保证图片在缩放...

    php图片等比例缩放

    从开源代码中总结的php图片等比例缩放 测试可用

    js图片缩放效果制作鼠标滚动图片等比例缩放

    在网页设计中,动态的图片展示效果可以提升用户体验,其中一种常见的技术是通过JavaScript实现鼠标滚动时图片等比例缩放。这个技术的核心在于利用JavaScript事件监听和CSS3变换功能,来实现图片随着页面滚动而优雅地...

    js图片等比例缩放

    在探讨“js图片等比例缩放”的主题时,我们深入解析了如何利用JavaScript来实现图片的等比例缩放,这是一个在网络开发中极为实用且常见的需求。等比例缩放的目的是为了适应不同尺寸的屏幕或布局需求,同时保持图片...

    jquery图片等比例缩放图片左右垂直居中

    在前端开发领域,图片的等比例缩放与居中显示是一项常见的需求,尤其在构建响应式网站或处理不同尺寸图片的展示时。"jQuery图片等比例缩放图片左右垂直居中"这一技术就是为了应对这样的挑战。jQuery是一个广泛使用的...

    jquery图片插件设置图片等比例缩放.rar

    jquery图片插件设置图片等比例缩放.rarjquery图片插件设置图片等比例缩放.rarjquery图片插件设置图片等比例缩放.rarjquery图片插件设置图片等比例缩放.rarjquery图片插件设置图片等比例缩放.rarjquery图片插件设置...

    js 图片等比例缩放

    js实现的图片等比例缩放,js实现的图片等比例缩放

Global site tag (gtag.js) - Google Analytics