`
z_jiankun
  • 浏览: 164281 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JPGE图片压缩

    博客分类:
  • Java
 
阅读更多

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class PicCompression
{
    /**
     * 压缩图片方法
     *
     * @param oldFile 要压缩的图片路径
     * @param newFile 压缩后添加的后缀名(在扩展名前添加,不会改变格式)
     * @param width 压缩宽
     * @param height 压缩高
     * @param percentage 是否等比例压缩,true则宽高比自动调整
     * @return
     * @throws Exception
     */
    public static void reduceImg(String oldFile, String newFile, int widthdist, int heightdist, boolean percentage)
    {
        try
        {
            File srcfile = new File(oldFile);
            if (!srcfile.exists())
            {
                return;
            }
            Image src = javax.imageio.ImageIO.read(srcfile);
           
            if (percentage)
            {
                // 为等比压缩计算输出的宽高
                double rate1 = ((double)src.getWidth(null)) / (double)widthdist + 0.1;
                double rate2 = ((double)src.getHeight(null)) / (double)heightdist + 0.1;
                double rate = rate1 > rate2 ? rate1 : rate2;
               
                int new_w = (int)(((double)src.getWidth(null)) / rate);
                int new_h = (int)(((double)src.getHeight(null)) / rate);
                // 设定宽高
                BufferedImage tag = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB);
               
                // 设定文件扩展名
                String filePrex = oldFile.substring(0, oldFile.lastIndexOf('.'));
                newFile = filePrex + "SCALE_AREA_AVERAGING" + oldFile.substring(filePrex.length());
                // 生成图片
                // 两种方法,效果与质量都相同,效率差不多
                // tag.getGraphics().drawImage(src.getScaledInstance(widthdist,heightdist, Image.SCALE_SMOOTH), 0, 0,
                // null);
                tag.getGraphics()
                    .drawImage(src.getScaledInstance(new_w, new_h, Image.SCALE_AREA_AVERAGING), 0, 0, null);
                FileOutputStream out = new FileOutputStream(newFile);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(tag);
                out.close();
            }
            else
            {
                // 设定宽高
                BufferedImage tag = new BufferedImage(widthdist, heightdist, BufferedImage.TYPE_INT_RGB);
               
                // 设定文件扩展名
                String filePrex = oldFile.substring(0, oldFile.lastIndexOf('.'));
                newFile = filePrex + "SCALE_AREA_AVERAGING" + newFile + oldFile.substring(filePrex.length());
                // 生成图片
                // 两种方法,效果与质量都相同,第二种效率比第一种高,约一倍
                // tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist, Image.SCALE_SMOOTH), 0, 0,
                // null);
                tag.getGraphics().drawImage(src.getScaledInstance(widthdist, heightdist, Image.SCALE_AREA_AVERAGING),
                    0,
                    0,
                    null);
                FileOutputStream out = new FileOutputStream(newFile);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(tag);
                out.close();
            }
           
        }
        catch (IOException ex)
        {
            ex.printStackTrace();
        }
    }
   
    public static void main(String[] args)
    {
        PicCompression.reduceImg("D:/30.jpg", "D:/20.jpg", 600, 600, true);
        System.out.print("ok…");
    }
}

分享到:
评论

相关推荐

    C++实现的JPEG压缩算法_c/c++编程实现jpeg图像压缩,将灰度图数据转为jpeg压缩格式的编码文件(txt为微云链接)

    用C++实现的压缩、解压缩算法,只有几个cpp、h文件,非常小巧,方便学习算法用。实现jpeg图像压缩,将灰度图数据转为jpeg压缩格式的编码文件

    C++实现的JPEG压缩算法_c/c++编程实现jpeg图像压缩,将灰度图数据转为jpeg压缩格式的编码文件

    在图像处理领域,JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩标准,尤其适用于照片和其他连续色调的图像。本项目是用C++语言实现的JPEG压缩算法,旨在帮助开发者理解和应用JPEG压缩技术。...

    图片bmp格式转jpge格式,批量

    相反,JPEG是一种有损压缩格式,通过牺牲一定的图像质量来实现较小的文件尺寸,适合于网络浏览和存储。 要进行批量转换,我们可以利用专门的工具,如压缩包内的“BMP转JPG批量转换器.exe”。这类软件允许用户一次性...

    将bmp,png,jif,jpge等格式图片转换为cur,ico的软件

    在标题和描述中提到的"将bmp,png,jif,jpge等格式图片转换为cur,ico的软件",是指能够处理不同图像格式,尤其是将常见的静态图像格式转换为Windows操作系统中的光标(cur)和图标(ico)文件的工具。这些特定的格式有...

    爱拍批量压缩 v3.5

    3、两个相同的图片压缩的结果也相同。 4、经过压缩的图片会被加添“已压缩”标记,该标记只被本工具识别,方便下次压缩时跳过此图片。 5、“自动调整图片方向”功能会旋转图片像素。 6、压缩图片不会修改图片的创建...

    设备发送的jpeg图片数据流,在电脑端显示

    在IT行业中,设备发送的JPEG图片数据流通常涉及到图像处理、网络通信以及用户界面的开发。这个场景描述了一个过程,即远程或本地设备通过网络或其他通信方式向电脑发送JPEG格式的图片数据,然后在电脑端进行显示。在...

    jpeg图片读写

    JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩图像文件格式,主要用于存储照片和其他高质量的图像。在本文中,我们将深入探讨JPEG图片的读取和写入过程,以及相关编程实现。 首先,JPEG文件的...

    wmv,avi,flv,rm,rmvb,mpeg,ts,mp4 jpg,png,gif,jpeg,jpge等测试视屏图片资源

    它支持多种压缩算法,可以在不同网络环境下提供流畅的观看体验。 2. **AVI (Audio Video Interleave)**:由微软创建的开放标准,能同时存储音频和视频数据。AVI格式的兼容性较强,但文件体积通常较大。 3. **FLV ...

    JPEG解码,可以移植到STM32中

    JPEG(Joint Photographic Experts Group)是一种广泛使用的有损图像压缩标准,它在存储和传输图像时提供了较高的压缩比,降低了存储空间的需求。本项目提供的是一套适用于STM32微控制器的C语言实现的小型JPEG解码器...

    jpeg大图分割

    【JPEG大图分割】指的是在JPEG格式的图片中进行信息隐藏的技术,这使得重要的信息能够被安全地存储在图片中,提高保密性。JPEG是一种广泛使用的静态图像压缩标准,由ISO/IEC联合图像专家组制定,适用于连续色调的...

    利用icepdf将pdf转换成tif及jpge格式文件

    JPEG则是一种广泛应用于网络和数字媒体的有损压缩格式,适合存储照片和连续色调的图像。 【描述解析】 描述中提到icepdf能够很好地将PDF转换为单个或多个TIFF图片,并且还支持转换为JPEG格式。这暗示了icepdf库提供...

    MFC显示JPEG图片程序

    而JPEG(Joint Photographic Experts Group)是一种广泛使用的有损图像压缩格式,特别适合于存储照片和高质量的图像。 首先,为了在MFC程序中显示JPEG图片,我们需要包含必要的头文件和库。在C++源文件中,引入`#...

    JPEG.rar_jpeg_jpeg 压缩程序

    【描述】中提到的"这是一个从网上下载下来后,经过我的加工后的比较完整的JPGE压缩程序",这可能意味着该压缩包包含了一个或多个用于处理JPEG图像的软件工具或库,这些工具可能包括图像压缩、解压缩、编辑或转换功能...

    一款串口摄像头采集通讯软件

    这里的串口摄像头采集通讯软件,它的主要任务是建立和管理串口与摄像头之间的数据传输,将串口接收到的数据转化为可读的图像格式,如描述中提到的“jpg”图片格式。这在实时监控、远程控制等领域有广泛应用。 ...

    jpg,bmp,png格式转ico的小软件,非常好用,绿色版本

    1. **JPEG(JPG)格式**:JPEG是一种有损压缩的图像格式,它通过牺牲部分图像质量来达到较高的压缩率,适合存储照片和其他色彩丰富的图像。JPEG文件通常具有较小的文件大小,便于网络传输和存储。 2. **Bitmap(BMP...

    linux下 将uyvy格式的图片转换成jpeg格式

    在Linux环境下,将UYUV格式的图片转换为JPEG格式是一个常见的图像处理任务,尤其是在多媒体处理、视频编码或图像分析等领域。UYVY是一种4:2:2的彩色空间格式,常用于数字视频,而JPEG(Joint Photographic Experts ...

    DependHex V1.0.0.14(new)

    DependHex 是一个PE分析工具, ...支持显示图片格式:bmp,ico,jpge,png,gif,cursor. 清单文件之类信息获取.等等... 未完成功能: debug信息获取... ********注:经过 upx压缩过的pe部分图形资源不能获取。

Global site tag (gtag.js) - Google Analytics