import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImgManager1 {
public static void main(String args[]) {
ImgManager1.reduceImgGif("c:/testgif.gif", "c:/xufnew/test02.gif", 150, 200);
}
/**
* 图像缩放 jpg格式
*
* @param imgsrc
* :原图片文件路径
* @param imgdist
* :生成的缩略图片文件路径
* @param widthdist
* :生成图片的宽度
* @param heightdist
* :生成图片的高度
*/
public static void reduceImg(String imgsrc, String imgdist, int widthdist,
int heightdist) {
try {
File srcfile = new File(imgsrc);
if (!srcfile.exists()) {
return;
}
Image src = ImageIO.read(srcfile);
BufferedImage tag = new BufferedImage((int) widthdist,
(int) heightdist, BufferedImage.TYPE_INT_RGB);
/*
* Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的
* 优先级比速度高 生成的图片质量比较好 但速度慢
*/
tag.getGraphics().drawImage(
src.getScaledInstance(widthdist, heightdist,
Image.SCALE_SMOOTH), 0, 0, null);
FileOutputStream out = new FileOutputStream(imgdist);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void reduceImgGif(String imgsrc, String imgdist, int widthdist,
int heightdist) {
try {
File srcfile = new File(imgsrc);
if (!srcfile.exists()) {
return;
}
Image src = ImageIO.read(srcfile);
BufferedImage tag = new BufferedImage((int) widthdist,
(int) heightdist, BufferedImage.TYPE_INT_RGB);
/*
* Image.SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的
* 优先级比速度高 生成的图片质量比较好 但速度慢
*/
tag.getGraphics().drawImage(
src.getScaledInstance(widthdist, heightdist,
Image.SCALE_SMOOTH), 0, 0, null);
// FileOutputStream out = new FileOutputStream(imgdist);
// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
// encoder.encode(tag);
// out.close();
ImageIO.write(tag, "gif", new File(imgdist));
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* 根据图片路径 读取图片文件
* @param fileName
* @return
*/
public static BufferedImage readImage(String fileName) {
BufferedImage bi = null;
try {
bi = ImageIO.read(new File(fileName));
} catch (IOException ioe) {
ioe.printStackTrace();
}
return bi;
}
/**
* 生成新的图片文件
* @param im
* @param formatName
* @param fileName
* @return
*/
public static boolean writeImage(RenderedImage im, String formatName,
String fileName) {
boolean result = false;
try {
result = ImageIO.write(im, formatName, new File(fileName));
} catch (IOException ioe) {
ioe.printStackTrace();
}
return result;
}
/**
* 转换图片格式 到 jpg
* @param im
* @param fileName
* @return
*/
public static boolean writeJPEGImage(RenderedImage im, String fileName) {
return writeImage(im, "JPEG", fileName);
}
/**
* 转换图片格式 到 gif 不知到好用不
* @param im
* @param fileName
* @return
*/
public static boolean writeGIFImage(RenderedImage im, String fileName) {
return writeImage(im, "GIF", fileName);
}
public static boolean writePNGImage(RenderedImage im, String fileName) {
return writeImage(im, "PNG", fileName);
}
public static boolean writeBMPImage(RenderedImage im, String fileName) {
return writeImage(im, "BMP", fileName);
}
}
从网上找到的一些代码 整理了一下 怕自己忘了 先放这
我把一张1200 * 1600的jpg的图片 缩放到 150 * 200 文件大小由700多k 降到7k多点 清晰度还可以, 因为要把网站放到手机上, 所以要作, 按流量收费的. 呵呵
由于gif编码是专利产品 所以java对他的支持不好, 有JPEGCodec 解码编码没有gif的
有人说sun的 jimi 和 jai 可以 但我没有发现可以使用的方法
分享到:
相关推荐
超厉害的工具类,将图片的大小进行缩放,图片不失真,还有图片转换格式
java图片缩放 java缩略图 缩略图 java图片处理
### JAVA实现图片缩放的方法与原理 在当前的互联网应用中,图片处理是十分常见的需求之一,尤其是在涉及用户上传图片的场景下。为了让上传的图片能够适应不同的展示环境,如网页、移动应用等,通常需要对图片进行...
4. **读取和缩放图片**:`ImageIO.read(file)`用于从给定路径读取图片,`img.getScaledInstance()`方法则根据新的宽度和高度比例缩放图片,使用`SCALE_SMOOTH`参数确保平滑的缩放效果。 5. **创建BufferedImage对象...
在Java编程领域,图片处理是一项常见的任务,其中图像缩放是尤为重要的操作。当我们需要调整图片大小,以适应不同的应用场景,如网页、移动设备或打印等,就需要进行图像缩放。本文将深入探讨Java中实现图像缩放的...
下面,我们将深入探讨如何使用Java来实现批量缩放图片的功能。 首先,Java提供了强大的Java Advanced Imaging (JAI)库和Java 2D API,它们为处理图像提供了丰富的功能,包括缩放、旋转、裁剪等。在这个场景下,我们...
1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image.BufferedImage`类来处理图像。为了等比例缩放图片,我们需要获取原始图片的宽高比,然后根据目标尺寸计算出新的宽高。关键代码可能如下: ```java...
以下是一个简单的示例,展示了如何使用`Convert`来缩放图片: ```java import net.sourceforge.imagemagick.ImageMagick; import net.sourceforge.imagemagick.MagickImage; public class ImageResizeExample { ...
在Java编程语言中,处理图片是一项常见的任务,包括图片的缩放、比例调整以及压缩等操作。这些功能在各种应用场景中都有所体现,比如网页设计、图像处理软件、移动应用等。下面我们将深入探讨Java中如何进行图片的...
在Java编程语言中,处理图像是一项常见的任务,其中包括图片的缩放操作。本文将深入探讨如何使用Java进行图片缩放处理,并确保在压缩过程中尽可能减少失真,同时允许自定义压缩后的图片质量。 首先,我们需要了解...
这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...
在Java编程中,图片缩放是一项常见的任务,特别是在开发图形用户界面(GUI)或处理图像数据时。这个主题涉及到图像处理的基本概念、Java中的图像API以及如何使用它们来实现缩放功能。以下是对这一主题的详细说明: ...
在Java开发中,图片上传、预览、剪切和缩放是常见的功能需求,尤其在Web应用中。这里,我们主要探讨如何实现这些功能,并基于`swfupload`这个库来构建一个完整的解决方案。 首先,`swfupload`是一个古老的Flash上传...
高清缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等 功能非常强大,并且很清晰,请给好评:)
根据提供的文件信息,我们可以总结出以下关于“Java图片缩放类”的相关知识点: ### Java 图片缩放类概述 在Java开发中,处理图像时经常需要进行缩放操作以适应不同的显示需求或优化资源占用。Java 提供了多种库来...
在Java编程语言中,图像处理是一项常见的任务,其中包括图片的加载、显示、保存以及缩放等操作。本实例代码着重讲解如何使用Java进行图片的缩放。Java提供了丰富的图形库,如AWT(Abstract Window Toolkit)和Swing...
本教程将专注于使用Java语言实现图片的等比缩放和压缩技术,以满足存储和传输的需求。下面,我们将深入探讨这些关键知识点。 首先,我们来了解等比缩放。等比缩放是指在改变图片尺寸时,保持其长宽比不变,防止图片...
在Java编程语言中,处理图像是一项常见的任务,其中包括图片的缩放和拉伸。本文将深入探讨如何使用Java实现这一功能,特别是在实际项目中的应用。标题"java 图片的缩放与拉伸"直指核心问题,即如何改变图片的尺寸以...