java图片处理工具

图片处理工具

import java.io.*;
import java.util.Date;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.*;

/**
 * 图片压缩处理
 *
 * @author kuang hj
 */
public class ImgCompressUtils
{
    // 图片对象
    private Image img;
    
    // 原图的宽度
    private int width;
    
    // 原图的高度
    private int height;
    
    private static BufferedImage image;
    
    @SuppressWarnings("deprecation")
    public static void main(String[] args)
        throws Exception
    {
        System.out.println("开始:" + new Date().toLocaleString());
        ImgCompressUtils imgCom = new ImgCompressUtils("D:\\jjj.jpg");
        // 处理图片得到 image
        imgCom.resizeFix(80, 80);
        // 输出结果文件
        outputNewFile("D:\\result.jpg", image);
        System.out.println("结束:" + new Date().toLocaleString());
    }
    
    /**
     * 构造函数 取到需要处理的图片,得到宽 和 高
     */
    public ImgCompressUtils(String fileName)
        throws IOException
    {
        File file = new File(fileName);// 读入文件
        img = ImageIO.read(file); // 构造Image对象
        width = img.getWidth(null); // 得到源图宽
        height = img.getHeight(null); // 得到源图长
    }
    
    /**
     * 按照宽度还是高度进行压缩
     *
     * @param destwidth int 最大宽度
     * @param destheight int 最大高度
     */
    public void resizeFix(int destwidth, int destheight)
        throws IOException
    {
        if (width / height > destwidth / destheight)
        {
            resizeByWidth(destwidth);
        }
        else
        {
            resizeByHeight(destheight);
        }
    }
    
    /**
     * 以宽度为基准,等比例放缩图片
     *
     * @param destwidth int 新宽度
     */
    public void resizeByWidth(int destwidth)
        throws IOException
    {
        int tmph = (int)(height * destwidth / width);
        resize(destwidth, tmph);
    }
    
    /**
     * 以高度为基准,等比例缩放图片
     *
     * @param destheight int 新高度
     */
    public void resizeByHeight(int destheight)
        throws IOException
    {
        int tmpw = (int)(width * destheight / height);
        resize(tmpw, destheight);
    }
    
    /**
     * 强制压缩/放大图片到固定的大小
     *
     * @param w int 新宽度
     * @param h int 新高度
     */
    public BufferedImage resize(int destwidth, int destheight)
    {
        // SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢
        image = new BufferedImage(destwidth, destheight, BufferedImage.TYPE_INT_RGB);
        
        // 绘制缩小后的图
        image.getGraphics().drawImage(img, 0, 0, destwidth, destheight, null);
        
        return image;
    }
    
    /**
     * 新生成的压缩文件 <一句话功能简述> <功能详细描述>
     *
     * @param path
     * @param image
     * @see [类、类#方法、类#成员]
     */
    public static void outputNewFile(String path, BufferedImage image)
    {
        try
        {
            File destFile = new File(path);
            FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流
            // 可以正常实现bmp、png、gif转jpg
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(image); // JPEG编码
            out.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
时间: 2024-11-09 19:01:19

java图片处理工具的相关文章

java 图片处理工具类

import java.awt.Image;  import java.awt.Rectangle;  import java.awt.geom.AffineTransform;  import java.awt.image.AffineTransformOp;  import java.awt.image.BufferedImage;  import java.io.File;  import java.io.FileInputStream;  import java.io.IOExcepti

java图片处理工具之-ImageMagick+jmagick(一)

1.介绍: ImageMagick是一套功能强大.稳定而且免费的工具集和开发包,可以用来读.写和处理超过89种基本格式的图片文件,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式.利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小.旋转.锐化.减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存.是搜狗百科的介绍! 2.下载: 其他安装教程:http://blog.sina.com.cn/s

java 图片转换工具

package com.sicdt.sicsign.web.utils; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import javax.i

java图片处理工具之-ImageMagick+jmagick(二)

简单的图片处理测试类: public class ImageUtil { static{ System.setProperty("jmagick.systemclassloader","no"); //必须 } /** * 压缩图片 */ public  void createimage(String filepath,String topath, int width, int height) { ImageInfo info = null;     //加载图片

图片处理工具类 - ImageUtils.java

纯JAVA实现的图片处理工具类,提供图片的裁剪.压缩.获取尺寸.制作圆角等方法. 源码如下:(点击下载 -ImageUtils.java .FolderUtils.java .commons-io-2.4.jar.commons-lang-2.6.jar) import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt

java图片裁剪处理工具类代码

剪切前:  原文:java图片裁剪处理工具类代码 源代码下载地址:http://www.zuidaima.com/share/1550463351786496.htm 剪切后:  package com.zuidaima.zhangjun.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import

用java的swing写了个图片标注工具

功能说明: 1 鼠标单击:选取裁剪区域 2 鼠标双击:选取裁剪区域,并把裁剪区域保存为文件,同时把区域中心点的坐标保存 3 打开图片:从某个文件夹打开图片并显示,同时把该目录的所有图片的路径载进来.这个功能主要是针对这么种情况, 假如处理某个文件夹的图片集,在某一张终止了或者暂停了,下一次要从这种图片开始. 4 保存坐标:把裁剪区域保存为文件,同时把区域中心点的坐标保存 5 打开目录:把该目录的所有图片的路径载进来. 6 下一张:展示下一张图片. 常见用法: 1 "打开目录",这时会将

Java常用工具类---image图片处理工具类、Json工具类

package com.jarvis.base.util; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;im

java图片上传(mvc)

最近有开始学起了java,好久没写文章了,好久没来博客园了.最近看了看博客园上次写的图片上传有很多人看,今天在一些篇关于java图片上传的.后台接收用的是mvc.不墨迹了,直接上图. 先看目录结构.idea开发. 一.图片上传还是使用的这款jq插件.前端部署这款插件,不用说了吧.效果图       二.前台代码只需要盖一个位置.因为是比较好用的插件.插件样式自行修改. 三.后台代码. 后面看不见的. 这个图片上传主要是自己写了几个函数.让图片储存更加方便.分成了年月日储存.但是后期遍历比较困难,