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实现,功能很强大,绝对要看哦
java代码保存宽高不变压缩图片(失真不大),按照文件大小,进行压缩质量控制
java生成图片的缩略图 直接运行代码可看效果
java处理的图片,缩放,比例处理,压缩等java处理的图片,缩放,比例处理,压缩等
用ImageMagick java实现图片的缩放
NULL 博文链接:https://javapub.iteye.com/blog/737703
java 图片缩放处理 ,图片压缩后失真很小.可自定义压缩后图片的质量
java 处理图片大小等比例缩放;图片裁剪;支持图片压缩不失真;支持图片添加水印;支持动态图的处理;支持自定义图片大小的转换 等 压缩包中内附使用说明
java 图片上传,可预览可剪切可缩放,没有积分下载就私信我
java裁剪、缩放图片工具类。含工具类和一个测试类。
该程序可以实现指定文件夹下的全部图片大小的重新设定,可自己修改指定大小。
java绘图 图片缩放 实例代码java绘图 图片缩放 实例代码
authorware 图片缩放
高清缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等 功能非常强大,并且很清晰,请给好评:)
这是个Java编写的批量图片缩放工具,自己觉得很实用,因为有时候相机照的图片太多,想缩放一下用电子邮件发送又不想劳烦ps这样的大师,用这款软件就可以轻松实现了,只要给它个装满图像文件的文件夹的地址,你就可以...
基于java的图片文件格式转换和线性缩放 图片文件格式转换最核心的问题就是要解决各种图片格式的编码和解码,
单独放大缩小图片和移动图片的很多,很难找到能缩放和移动一起实现的例子。由于项目的需要就自己写了个java实现图片放大(以视图中心放大)、缩小、移动、鼠标拖移。