我现在使用的JDK的压缩图片的方法,比如原图500x500 像素,大小60KB ,大图看上去很清楚,我按比例1:1压缩到200x200之后,小图片变得很模糊,大小大概5KB左右。 我试着弄了一张1000x1000像素250多KB的图片,压缩到200x200之后还是有点模糊, 有什么办法保证压缩后的图片能够清楚一点, 或者说用其他方式。。
解决方案 »
- 急-->Hibernate3 返回查询结果为Map时 ,字段值被截断,在线等
- 帮帮忙了!!!!!!!
- 严重: IllegalArgumentException in class
- weblogic集群是不是必须安装具有cluster的weblogic license啊?
- 请问那里有IBM WebSphere下载呀
- <logic:iterate>能否将几条 A属性相同的数据 只显示为1条。并且将这几条数据 中的B属性的数据求和。
- ssh2问题,急急急
- 那位有resin2.1.6下载的网址啊??谢谢!!!
- JDBC关于同时取得存储过程的返回值和结果集的问题,解决马上结帖!
- jb9中tomcat放在哪里
- 我这里有一个小的聊天系统的代码,setText(str)不生效?(马士兵版)
- 帮看一下servlet里面打印表格的输出格式啊
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class lessenImg { public static void main(String[] args) {
File file=new File("D://1.jpg");
try {
Image src=ImageIO.read(file);
BufferedImage bufferedImage=new BufferedImage(240,200,BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(src,0,0,240,200,null);//绘制缩小后的图,两个一致...
OutputStream os=new FileOutputStream("D://aa.jpg");
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(os);
encoder.encode(bufferedImage);
os.close();
System.out.println("完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static BufferedImage resizeBuff(BufferedImage bufImage, int width, int height) {
AffineTransform transform = AffineTransform.getScaleInstance(
(double)width/(double)bufImage.getWidth(),
(double)height/(double)bufImage.getHeight());
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BILINEAR);
return op.filter(bufImage, null);
}
这应该是失真比较小的一种方式了
我最后的方法时这样
public static String reduceImg(File imgsrc, String imgdist, int width,int height) { try { Image src = javax.imageio.ImageIO.read(srcfile); if (width <= 0 || height <=0 ) {
return "";
} BufferedImage tag = new BufferedImage((int) width, (int) height,
BufferedImage.TYPE_INT_RGB);
//----图像失真比较小的方法-----
AffineTransform transform = AffineTransform.getScaleInstance(
(int) width, (int) height);
AffineTransformOp op = new AffineTransformOp(transform,
AffineTransformOp.TYPE_BILINEAR);
op.filter(tag, null);
op.filter(tag, null).getGraphics().drawImage(
src.getScaledInstance((int) width, (int) height,
Image.SCALE_SMOOTH), 0, 0, null);// tag.getGraphics().drawImage(
// src.getScaledInstance((int) width, (int) height,
// Image.SCALE_SMOOTH), 0, 0, null); FileOutputStream out = new FileOutputStream(imgdist);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);
out.close(); return imgdist; } catch (IOException ex) { ex.printStackTrace();
return null;
} }
报异常,op.filter(tag, null); 在这里下去