java图片处理工具

标签: java 图片 理工 | 发表时间:2015-02-01 15:45 | 作者:kuanghongjiang
出处:http://blog.csdn.net

图片处理工具

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();
        }
    }
}


作者:kuanghongjiang 发表于2015-2-1 15:45:51 原文链接
阅读:0 评论:0 查看评论

相关 [java 图片 理工] 推荐:

java图片处理工具

- - CSDN博客推荐文章
作者:kuanghongjiang 发表于2015-2-1 15:45:51 原文链接. 阅读:0 评论:0 查看评论.

Java的图片处理工具类

- - CSDN博客推荐文章
public static String IMAGE_TYPE_GIF = "gif";// 图形交换格式. public static String IMAGE_TYPE_JPG = "jpg";// 联合照片专家组. public static String IMAGE_TYPE_JPEG = "jpeg";// 联合照片专家组.

Java图片加水印

- - CSDN博客推荐文章
pressText("真的好想你","3.jpg","宋体",Font.BOLD,0,20,200,200);. 作者:cjc211322 发表于2014-12-4 8:35:45 原文链接. 阅读:59 评论:0 查看评论.

JAVA上传图片的缩放处理

- - CSDN博客推荐文章
  图片上传到服务器后,会根据情况将图片缩小成一个图标,我们可以利用java强大的图形处理功能,对上传的图片进行缩放处理.   下面的程序使用jdk1.4中最新的ImageIO对图片进行读写. 使用AffineTransform对图片进行缩放.   * @param fromdir 图片的原始目录.

Java中图片压缩处理

- - 编程语言 - ITeye博客
整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你可以使用bmp、png、gif等,至于压缩质量,可以通过BufferedImage来指定. 在C盘的temp下放置一张图片pic123.jpg,尽量找一个像素高一点的图片,这里我找了一张5616*3744的.

java图片裁切工具类

- - CSDN博客编程语言推荐文章
* @param x1 选择区域左上角的x坐标. * @param y1 选择区域左上角的y坐标. * @param width 选择区域的宽度. * @param height 选择区域的高度. * @param sourcePath 源图片路径. * @param descpath 裁切后图片的保存路径.

JAVA实现对BMP图片的读取

- - ITeye博客
BMP图片格式,是windows自带的一个图片格式,(*bmp),在windows的系统下都支持这种格式,bmp格式与设备无关的位图(DIB)格式,BMP简称位图,BMP的原始数据是没有经过压缩处理的  占用的空间比其它格式的图片要大.    BMP由四部分组成 ,位图文件头 , 位图信息头 ,  颜色 , 图像数据区.

Java为图片生成缩略图

- - 编程语言 - ITeye博客
需要为一张图片生成缩略图. 可以通过开源jar包thumbnailator-0.4.8.jar中提供的类来实现. 解压jar包可以看到测试类:ThumbnailatorTest.java,其具体代码如下:. * size(width,height) 若图片横比200小,高比300小,不变. * 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变.

java带图片的邮件发送方法实现

- - CSDN博客编程语言推荐文章
// JavaMail需要Properties来创建一个session对象. 它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机. // properties.put("mail.smtp.host", "mailcas.chinapnr.com");// 设置smtp主机. properties.put("mail.smtp.host", "smtp.163.com");// 设置smtp主机.

介绍几个java把网页报存为图片的框架

- - CSDN博客Web前端推荐文章
用java实现java截图倒不难,原理吗就是把当前屏幕存成一个图,然后获取鼠标拉去的想去位置然后把截取的图保存到panel里边,再生成图片即可:示例代码就不展示了,网上很多. 下边说几个将网页保存为图片的框架:. 我说这个就是原声的java代码进行封装的一个jar包. 效果非常差,代码就不贴了网上好多.