java中如何对jpg图片做压缩处理
时间: 2023-09-10 13:12:52 浏览: 105
Java 中可以使用 ImageIO 类库对 JPG 图片进行压缩处理,具体步骤如下:
1. 读取原始图像文件:
```java
File file = new File("原始图片路径");
BufferedImage image = ImageIO.read(file);
```
2. 创建一个 BufferedImage 对象,并设置它的大小和类型:
```java
int width = image.getWidth();
int height = image.getHeight();
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
```
3. 使用 Graphics2D 对象将原始图像绘制到 BufferedImage 对象中:
```java
Graphics2D g2d = bufferedImage.createGraphics();
g2d.drawImage(image, 0, 0, width, height, null);
g2d.dispose();
```
4. 创建一个 ByteArrayOutputStream 对象,将 BufferedImage 对象写入其中:
```java
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "jpg", os);
```
5. 使用 ImageWriter 对象对数据进行压缩:
```java
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.5f); // 压缩质量,范围为 0.0f 到 1.0f
writer.setOutput(ImageIO.createImageOutputStream(os));
writer.write(null, new IIOImage(bufferedImage, null, null), param);
```
6. 将压缩后的图像数据写入文件:
```java
byte[] compressedData = os.toByteArray();
FileOutputStream fos = new FileOutputStream("压缩后图片路径");
fos.write(compressedData);
fos.close();
```
注意:在进行压缩时,压缩质量设置为 1.0f 表示不进行压缩,设置为 0.0f 表示最大程度压缩。一般情况下,可以将压缩质量设置在 0.5f 左右,使得压缩后的图像既能够满足大小需求,又不至于失真过度。
阅读全文