锁定老帖子 主题:用JAVA生成缩图后图片不清楚了怎么解决!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-27
import java.awt.*; import java.io.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log; import org.apache.commons.io.*; public class ImgUtil { private static final Log logger = LogFactory.getLog(ImgUtil.class); public ImgUtil() { } public static void reduceImg(String imgsrc, String imgdist, int widthdist, int heightdist) { try { File srcfile = new File(imgsrc); if (!srcfile.exists()) { return; } Image src = javax.imageio.ImageIO.read(srcfile); int width = src.getWidth(null); int height = src.getHeight(null); if (width <= widthdist && height <= heightdist) { //SysUtil.cpoyFile(imgsrc, imgdist); FileUtils.copyFile(new File(imgsrc), new File(imgdist)); return; } //宽度除以高度的比例 float wh = (float) width / (float) height; if (wh > 1) { float tmp_heigth = (float) widthdist / wh; BufferedImage tag = new BufferedImage(widthdist, (int) tmp_heigth, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(src, 0, 0, widthdist, (int) tmp_heigth, null); FileOutputStream out = new FileOutputStream(imgdist); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(tag); out.close(); } else { float tmp_width = (float) heightdist * wh; BufferedImage tag = new BufferedImage( (int) tmp_width, heightdist, BufferedImage.TYPE_INT_RGB); tag.getGraphics().drawImage(src, 0, 0, (int) tmp_width, heightdist, null); FileOutputStream out = new FileOutputStream(imgdist); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(tag); out.close(); } } catch (IOException ex) { logger.error(ex); } } }这种方式!但生成的图过小的话就不清楚了! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-27
把反锯齿功能打开啊
|
|
返回顶楼 | |
发表时间:2006-12-27
能不能具体点啊!
|
|
返回顶楼 | |
发表时间:2006-12-27
送上原图和生成生的图!
|
|
返回顶楼 | |
发表时间:2006-12-27
我也碰到了同样的问题,用photoshop缩小图片就是比用网上的Java程序缩小图片要清楚。
(注:对于JPEG,我采用同样的压缩率) |
|
返回顶楼 | |
发表时间:2006-12-27
我也有类似问题,在Google上搜索了一下,发现在C#中可以设置绘图清晰度,可以让生成的缩略图和PhotoShop生成的效果一样: c# 代码
不知道在Java中有没有类似方法? |
|
返回顶楼 | |
发表时间:2006-12-27
JAVA中有没有什么比较好的方法啊!
|
|
返回顶楼 | |
发表时间:2006-12-27
使用 Graphics2D
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Core Java™ 2 Volume II 第 7 章有详细的介绍 |
|
返回顶楼 | |
发表时间:2006-12-27
有没有现成的例子啊!
|
|
返回顶楼 | |
发表时间:2006-12-27
java 代码
这个以前试过的,好像什么效果。。。,连生成的文件大小都与不加这段代码时是一样的,所以怀疑这个是不是就是Java2D的默认值。 |
|
返回顶楼 | |