图片缩小如何不失真?

eevsee 2014-06-30 11:00:48
大家好,我需要将图片比如宽高1000x2000px,缩小为图片200x400px,保持和原来图片一样清晰或者说不失真,自己操作了虽然能改变尺寸但是图片感觉模糊了许多,望支招或者有现成代码使用吗?谢谢!dpi保持为原来的72dpi或者自动修改为300最好。
...全文
6498 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
eevsee 2014-07-05
  • 打赏
  • 举报
回复
只要能清晰,不用考虑文件大小
shine333 2014-07-04
  • 打赏
  • 举报
回复
引用 12 楼 u011447866 的回复:
[quote=引用 11 楼 shine333 的回复:] [quote=引用 10 楼 u011447866 的回复:] 上面只是简单的应用,出来的图片比不过楼上,不过这个图片处理工具包很真心很强大
是的,API其实有好多种,不过如果有其他需求的话,imagemagick的强大功能,我是有足够信心的。[/quote] imagemagick是一款软件,如果项目在客户那边跑,总不能去要求客户安装这个软件吧 imagemagick出来的图片确实比我使用的api好多,imagemagick有没有提供相关api?[/quote] JMagick之类好多种Java类的API,还有C/C++, C#, Perl... 无数种其他语言的,当然,所有这些,其实都是个壳。 至于装,我觉得问题不是特别大,你连JVM都装了。当然,如果你这个项目所有的图片处理需求——比如所有各种格式(其中JPG一个扩展名,其实就有N种不同的压缩,颜色空间的区别)的兼容,还有各种缩放,水印,反转,合成,提取,组合成动画等等需求都能用纯Java API搞定的话,那自然是最好的了。
shine333 2014-07-03
  • 打赏
  • 举报
回复
另外,顺带说一句,imagemagick,尤其在linux服务器上,应该是处理图片的第一选择
shine333 2014-07-03
  • 打赏
  • 举报
回复
jdk本身的API,基本上只能到这个程度了。

如果一定要更好的话,只能借助类似imagemagick这种专门成立图像的工具了。

imagemagick直接命令行:
convert old.jpg -resize 240x360 new.jpg

如果要Java调用的话,可以用JMagick之类API
eevsee 2014-07-03
  • 打赏
  • 举报
回复
引用 8 楼 shine333 的回复:
jdk本身的API,基本上只能到这个程度了。 如果一定要更好的话,只能借助类似imagemagick这种专门成立图像的工具了。 imagemagick直接命令行:
convert old.jpg -resize 240x360 new.jpg
如果要Java调用的话,可以用JMagick之类API
这个图片是用imagemagick处理的吗 看起来还挺清晰了。另外安装软件感觉可能比较麻烦,但JAVA这么强大到现在至此应该早有比较好的方式吧
引用 10 楼 u011447866 的回复:
api的生成的话,还是有更好的办法 import net.coobird.thumbnailator.Thumbnails; Thumbnails.of("D:/wall/asdasd.jpg").size(240, 360).outputQuality(1f).outputFormat("jpg").toFile("D:/wall/newasdasd.jpg"); 上面只是简单的应用,出来的图片比不过楼上,不过这个图片处理工具包很真心很强大
上面这图片是用您上面这个生成的吗?
为自己喝彩 2014-07-03
  • 打赏
  • 举报
回复
引用 11 楼 shine333 的回复:
[quote=引用 10 楼 u011447866 的回复:] 上面只是简单的应用,出来的图片比不过楼上,不过这个图片处理工具包很真心很强大
是的,API其实有好多种,不过如果有其他需求的话,imagemagick的强大功能,我是有足够信心的。[/quote] imagemagick是一款软件,如果项目在客户那边跑,总不能去要求客户安装这个软件吧 imagemagick出来的图片确实比我使用的api好多,imagemagick有没有提供相关api?
shine333 2014-07-03
  • 打赏
  • 举报
回复
引用 10 楼 u011447866 的回复:
上面只是简单的应用,出来的图片比不过楼上,不过这个图片处理工具包很真心很强大
是的,API其实有好多种,不过如果有其他需求的话,imagemagick的强大功能,我是有足够信心的。
为自己喝彩 2014-07-03
  • 打赏
  • 举报
回复

api的生成的话,还是有更好的办法
import net.coobird.thumbnailator.Thumbnails;

Thumbnails.of("D:/wall/asdasd.jpg").size(240, 360).outputQuality(1f).outputFormat("jpg").toFile("D:/wall/newasdasd.jpg");

上面只是简单的应用,出来的图片比不过楼上,不过这个图片处理工具包很真心很强大
eevsee 2014-07-02
  • 打赏
  • 举报
回复
引用 6 楼 vnvlyp 的回复:
你这效果很好了吧?缩小这么多肯定会丢失细节,你还想要怎么清晰?
我是想要类似在ps将一张图片用自由工具缩小那样的或基本接近的清晰。因为我要将几张大尺寸的图片进行缩小然后拼起来draw成一张图片。现在拼出的图片因为拼的图片模糊而拼出来模糊达不到要求。
vnvlyp 2014-07-02
  • 打赏
  • 举报
回复
你这效果很好了吧?缩小这么多肯定会丢失细节,你还想要怎么清晰?
疯狂的玖号 2014-07-01
  • 打赏
  • 举报
回复
等待大神出现,顶一顶
eevsee 2014-07-01
  • 打赏
  • 举报
回复
引用 3 楼 shine333 的回复:
[quote=引用 1 楼 defonds 的回复:] 你怎么操作的,用的啥工具,失真那么厉害
同问,最好有操作方法,以及原始的图片。[/quote] 代码和网上查得的差不多,不知是不是如他们说的那样清晰。
eevsee 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
你怎么操作的,用的啥工具,失真那么厉害


BufferedImage newBufImg = new BufferedImage((int) newWidth, (int) newHeight, BufferedImage.TYPE_INT_RGB);
newBufImg.getGraphics().drawImage(imgsrc.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);
FileOutputStream output = new FileOutputStream(outPathname);
// JPEGImageEncoder可适用于其他图片类型的转换
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(newBufImg);
output.close();

原图:
上传修改后图片:
Defonds 2014-07-01
  • 打赏
  • 举报
回复
你怎么操作的,用的啥工具,失真那么厉害
shine333 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
你怎么操作的,用的啥工具,失真那么厉害
同问,最好有操作方法,以及原始的图片。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧