`
rain_2372
  • 浏览: 683146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 将图片按照指定的图片尺寸压缩

    博客分类:
  • java
阅读更多
import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
 
/**
* * @author WQ * @date 2011-01-14 * @versions 1.0 图片压缩工具类 提供的方法中可以设定生成的
* 缩略图片的大小尺寸等
*/ 
public class ImageUtil { 
    /** * 图片文件读取 * * @param srcImgPath * @return */ 
    private static BufferedImage InputImage(String srcImgPath) { 
        BufferedImage srcImage = null; 
        try { 
            FileInputStream in = new FileInputStream(srcImgPath); 
            srcImage = javax.imageio.ImageIO.read(in); 
        } catch (IOException e) { 
            System.out.println("读取图片文件出错!" + e.getMessage()); 
            e.printStackTrace(); 
        } 
        return srcImage; 
    } 
  public static void main(String args[]){
try {
Map<Integer, String> map = readfile("E:/yuan", null);
for (int i = 0; i < map.size(); i++) {
System.out.println(map.get(i) + " ==" + i);
System.out.println();
String oldpath = map.get(i);
compressImage(map.get(i), "E:/ww/_" + i + ".png", 100, 75);
}
} catch (Exception ex) {
}
System.out.println("ok");
  }
    /**
     * * 将图片按照指定的图片尺寸压缩 * * @param srcImgPath :源图片路径 * @param outImgPath *
     * :输出的压缩图片的路径 * @param new_w * :压缩后的图片宽 * @param new_h * :压缩后的图片高
     */ 
    public static void compressImage(String srcImgPath, String outImgPath, 
            int new_w, int new_h) { 
        BufferedImage src = InputImage(srcImgPath); 
        disposeImage(src, outImgPath, new_w, new_h); 
    } 
 
    /**
     * * 指定长或者宽的最大值来压缩图片 * * @param srcImgPath * :源图片路径 * @param outImgPath *
     * :输出的压缩图片的路径 * @param maxLength * :长或者宽的最大值
     */ 
    public static void compressImage(String srcImgPath, String outImgPath, 
            int maxLength) { 
        // 得到图片 
        BufferedImage src = InputImage(srcImgPath); 
        if (null != src) { 
            int old_w = src.getWidth(); 
            // 得到源图宽 
            int old_h = src.getHeight(); 
            // 得到源图长 
            int new_w = 0; 
            // 新图的宽 
            int new_h = 0; 
            // 新图的长 
            // 根据图片尺寸压缩比得到新图的尺寸 
            if (old_w > old_h) { 
                // 图片要缩放的比例 
                new_w = maxLength; 
                new_h = (int) Math.round(old_h * ((float) maxLength / old_w)); 
            } else { 
                new_w = (int) Math.round(old_w * ((float) maxLength / old_h)); 
                new_h = maxLength; 
            } 
            disposeImage(src, outImgPath, new_w, new_h); 
        } 
    } 
 
    /** * 处理图片 * * @param src * @param outImgPath * @param new_w * @param new_h */ 
    private synchronized static void disposeImage(BufferedImage src, 
            String outImgPath, int new_w, int new_h) { 
        // 得到图片 
        int old_w = src.getWidth(); 
        // 得到源图宽 
        int old_h = src.getHeight(); 
        // 得到源图长 
        BufferedImage newImg = null; 
        // 判断输入图片的类型 
        switch (src.getType()) { 
        case 13: 
            // png,gifnewImg = new BufferedImage(new_w, new_h, 
            // BufferedImage.TYPE_4BYTE_ABGR); 
            break; 
        default: 
            newImg = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB); 
            break; 
        } 
        Graphics2D g = newImg.createGraphics(); 
        // 从原图上取颜色绘制新图 
        g.drawImage(src, 0, 0, old_w, old_h, null); 
        g.dispose(); 
        // 根据图片尺寸压缩比得到新图的尺寸 
        newImg.getGraphics().drawImage( 
                src.getScaledInstance(new_w, new_h, Image.SCALE_SMOOTH), 0, 0, 
                null); 
        // 调用方法输出图片文件 
        OutImage(outImgPath, newImg); 
    } 
 
    /**
     * * 将图片文件输出到指定的路径,并可设定压缩质量 * * @param outImgPath * @param newImg * @param
     * per
     */ 
    private static void OutImage(String outImgPath, BufferedImage newImg) { 
        // 判断输出的文件夹路径是否存在,不存在则创建 
        File file = new File(outImgPath); 
        if (!file.getParentFile().exists()) { 
            file.getParentFile().mkdirs(); 
        }// 输出到文件流 
        try { 
            ImageIO.write(newImg, outImgPath.substring(outImgPath 
                    .lastIndexOf(".") + 1), new File(outImgPath)); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
public static Map<Integer, String> readfile(String filepath,
Map<Integer, String> pathMap) throws Exception {
if (pathMap == null) {
pathMap = new HashMap<Integer, String>();
}

File file = new File(filepath);
// 文件
if (!file.isDirectory()) {
pathMap.put(pathMap.size(), file.getPath());

} else if (file.isDirectory()) { // 如果是目录, 遍历所有子目录取出所有文件名
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "/" + filelist[i]);
if (!readfile.isDirectory()) {
pathMap.put(pathMap.size(), readfile.getPath());

} else if (readfile.isDirectory()) { // 子目录的目录
readfile(filepath + "/" + filelist[i], pathMap);
}
}
}
return pathMap;
}

转http://lijinzhe.blog.163.com/blog/static/62147668201222024822711/
分享到:
评论

相关推荐

    java将图片变成指定大小

    本文将详细解释如何使用Java将图片转换为指定大小,无论原始图片尺寸如何。 首先,我们需要了解Java中的核心类库`javax.imageio`和`java.awt.image`,它们提供了处理图像的功能。`javax.imageio`用于读取和写入图像...

    java图片压缩处理(可以压缩为任意大小

    总结来说,Java中的图片压缩涉及到读取图片、调整尺寸、选择合适的压缩格式和质量,并将结果保存到新文件。开发者可以根据需求灵活选择API和策略,确保在满足压缩需求的同时,尽可能保持图片的质量。

    java图片压缩文件大小图片大小(支持gif动态图)

    以下是压缩图片的示例代码: ```java public void compressImage(BufferedImage image, String outputFilePath, int targetWidth, int targetHeight, float quality) throws IOException { ImageOutputStream ...

    java各种方式压缩图片

    通过创建一个目标尺寸的BufferedImage对象,然后使用`Graphics2D`的`drawImage()`方法将原图绘制到新尺寸的BufferedImage上,从而实现按指定宽度和高度压缩图片。 ```java import java.awt.Graphics2D; import java...

    java压缩上传图片

    根据提供的文件信息,我们可以总结出以下关于“Java压缩上传图片”的相关知识点: ### 1. 知识点一:图片压缩的基本概念 - **定义**:图片压缩是一种减少图像文件大小的技术,通常用于减少存储空间需求或加快网络...

    图片压缩,不改变宽高

    使用两中方法进行压缩,可以只改变图片大小,如,原图片100kb,压缩后变成40kb。并且不改变宽高。 一.使用ImageMagick进行压缩类-Aa.java 需要做以下配置: 1.将jmagick.dll加入jdk\bin目录中 2.将jmagick.dll加入到...

    用java如何把图片处理到指定大小

    ### 如何使用Java进行图片尺寸调整与裁剪 在日常的软件开发中,经常会遇到对图片进行处理的需求,比如调整图片大小、裁剪图片等。本文将详细介绍如何使用Java实现图片处理,具体包括图片的尺寸调整和指定位置的裁剪...

    java图片压缩通用类

    "java图片压缩通用类"是一个实用的工具,它提供了便捷的方法来压缩图片,适用于各种项目需求。这个通用类库简化了处理图像的复杂性,使得开发者可以快速地集成图片压缩功能到他们的应用程序中。 在Java中,我们可以...

    Java做图片压缩的代码

    以下是一个简单的例子,展示了如何使用Java 2D API压缩图片: ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ...

    java图片压缩打包

    3. **保存压缩图片**:使用`ImageIO.write()`方法将压缩后的图片写入新的文件,指定合适的格式和质量。 ```java File outputFile = new File("path_to_output_image"); ImageIO.write(resizedImage, "JPEG", ...

    压缩图片不失真,c# asp.net

    3. **调整图片大小**(可选):如果目标是减小图片尺寸,可以使用Bitmap对象的Clone()方法配合Rectangle结构体来缩放图片。注意,缩小图片通常比放大更节省空间,但可能会牺牲部分清晰度。 4. **设置压缩参数**:...

    Java将PDF生成图片

    以下是一些关于“Java将PDF生成图片”的核心知识点: 1. **PDF处理库**:在Java中,我们可以使用第三方库如Apache PDFBox、iText和PDF Clown等来处理PDF文档。这些库提供了丰富的API,用于读取、解析和操作PDF文件...

    Thumbnails 纯java图片压缩api 包括文档及相关学习资料

    - **数据存储**:在大数据分析或云存储服务中,压缩图片可以节省存储空间。 - **移动应用**:对于移动设备,由于内存和存储空间有限,图片压缩是必不可少的。 - **图像处理**:在进行批量图片处理或自动化工作流...

    Java图片压缩工具

    除了基本的尺寸压缩,还可以利用JPEG的压缩级别来进一步优化。在`javax.imageio.ImageWriteParam`中,可以通过设置`setQuality()`方法调整质量因子,从而控制压缩程度。 在“PicDemo”这个项目中,可能包含了实现...

    java图片等比压缩后裁剪

    在Java编程中,图片处理是一项常见的任务,包括图片的压缩和裁剪。在这个场景中,我们关注的是如何实现“图片等比压缩后裁剪”。等比压缩是指保持原图宽高比例进行压缩,以避免图像失真,而裁剪则是根据特定需求去除...

    java实现上传图片并压缩图片大小功能

    `将图片尺寸不变,压缩图片文件大小。这里的`outputQuality`方法用来设置图片的质量,参数越小,图片的质量越低,但是文件大小也越小。 在实际应用中,我们可以使用以下代码来实现上传图片并生成缩略图: ```java ...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、裁剪、压缩以及添加水印等。以下将详细介绍这些知识点: 1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image....

    java实现gif和jpe格式图片压缩

    本篇文章将深入探讨如何使用Java来实现GIF和JPEG(JPG)格式图片的压缩,以及如何控制压缩率。我们将主要关注两个关键库:Java标准库(Java SE)中的`javax.imageio`包和第三方库如Apache Commons Imaging (以前称为...

    Thumbnails图片处理压缩/裁剪java代码纯净示例+注释详细

    1. **图片压缩**:将图片压缩至指定尺寸,保持原始宽高比。 ```java import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.builders.ThumbnailParameterBuilder; import ...

    图片按照指定宽度或者高度等比例压缩图片以及裁剪图片

    "图片按照指定宽度或高度等比例压缩图片以及裁剪图片"这个主题涉及到图像处理的关键技术,包括图像缩放和裁剪。接下来,我们将深入探讨这两个概念。 首先,**等比例压缩图片**是保持图片原有宽高比的情况下调整图片...

Global site tag (gtag.js) - Google Analytics