Java Image Filters 提供一个用来处理图像缩放的 Filter 类:ScaleFilter,用法如下:

BufferedImage bi_src = ...;

ImageIO.write(new ScaleFilter(100,100), "jpeg", dest);

但在使用中发现图像缩小后质量比较差,有很多的锯齿,如下图所示:

打开 ScaleFilter 代码后:

public class ScaleFilter extends AbstractBufferedImageOp {

private int width;

private int height;

/**

* Construct a ScaleFilter.

*/

public ScaleFilter() {

this(32, 32);

}

/**

* Construct a ScaleFilter.

* @param width the width to scale to

* @param height the height to scale to

*/

public ScaleFilter( int width, int height ) {

this.width = width;

this.height = height;

}

public BufferedImage filter( BufferedImage src, BufferedImage dst ) {

if ( dst == null ) {

ColorModel dstCM = src.getColorModel();

dst = new BufferedImage(dstCM, dstCM.createCompatibleWritableRaster( width, height ),

dstCM.isAlphaPremultiplied(), null);

}

Image scaleImage = src.getScaledInstance( width, height, Image.SCALE_AREA_AVERAGING );

Graphics2D g = dst.createGraphics();

g.drawImage( scaleImage, 0, 0, width, height, null );

g.dispose();

return dst;

}

public String toString() {

return "Distort/Scale";

}

}

这里可以看出,它使用的是一种折中的图像质量处理方法 (Image.SCALE_AREA_AVERAGING) ,只要将这个值改为 Image.SCALE_SMOOTH,就可以质量较高的图像,而且图像文件并没有变大,如下图:

你可以重写一个 MyScaleFilter 的类进行处理,省却修改原有代码。

java 缩放图片 锯齿_Java Image Filters 图像缩放质量差的问题解决相关推荐

  1. Java,图片在table中显示并缩放2.0

    第二天更新-- 先说一下昨天socket传输不同类型的接收,我的解决办法--抛出异常 https://blog.csdn.net/everything002/article/details/10754 ...

  2. java jlabel图片大小_java – 调整图片大小以适应JLabel

    大纲 以下是要遵循的步骤. >将图片作为BufferedImage读取. >将BufferedImage的大小调整为另一个大小为JLabel的BufferedImage. >从调整大 ...

  3. java 简单图片浏览器_Java实现简单的图片浏览器

    第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...

  4. java显示图片缩略图_java中生成图片的缩略图

    importjava.awt.Image;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileOutputS ...

  5. java 数字图片识别_java – 识别图像中的数字

    您很可能需要执行以下操作: >在整个页面上应用Hough Transform算法,这应该会产生一系列页面部分. >对于您获得的每个部分,请再次应用.如果当前部分产生2个元素,那么你应该处理 ...

  6. java 背景图片自适应_java 背景图片随窗口大小变化进行自动缩放及平铺 | 学步园...

    最近一直被这个问题困扰这,上网也搜了不少这方面的知识,发现很多人都说用reapint方法(很简单的)进行图片重绘就OK了(没源码),于是乎至今也没实现 但通过自己的摸索也确实学到了不少东东滴! 在看代 ...

  7. java 消除png 锯齿_java Graphics2d消除锯齿,使字体平滑显示

    标签: Java 2D API 提供的文本处理功能进行美化.Java 2D API 的文本功能包括: 使用抗锯齿处理和微调(hinting)以达到更好的输出质量 可以使用系统安装的所有字体 可以将对图 ...

  8. java判断图片相同_java 识别图片相似度及图片是否相同

    1.比较MD5值 判断图片是否相同 package com.zerdoor.util; import java.io.File; import java.io.FileInputStream; imp ...

  9. JAVA绘制图片原理_java开发_图片截取工具实现原理

    先来看看效果: 测试一: 原图: 效果图: 测试二: 原图: 效果图: 代码部分: /** * */ package com.b510; import java.awt.rectangle; impo ...

最新文章

  1. C中 #define
  2. FATCAT桌面计算器即将出炉!
  3. 谈谈我熟悉又陌生的cookie
  4. 分享Qt的面试题目(或许未来的我能用的上呢)_vortex_新浪博客
  5. 关于git的cherry-pick命令
  6. server使用abp中调用存储过程 sql_ABP中连接已有数据库执行Sql或存储过程
  7. 判断用户什么时候离开,以什么方式离开
  8. 六石管理学:你觉得别人错了,应该怎么办
  9. 【电子科技大学-微电子技术导论】学习笔记
  10. 6.27java斗地主
  11. 怎么把ipad中超大文件传输到电脑
  12. C#绘制中国象棋棋盘
  13. flutter 应用 adb shell input swipe 命令失效
  14. 计算机显卡的安装步骤简约,自己组装电脑:显卡安装教程
  15. Netty报错 远程主机强迫关闭了一个现有的连接 异常
  16. 【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图
  17. python与php8,后端php和python学哪个
  18. 贝塞尔曲线与贝塞尔曲面
  19. Linux:进程控制
  20. 泰勒公式浅谈原理(转)

热门文章

  1. 一专科生逆袭入职腾讯,真是小母牛坐飞机,牛逼上天了啊
  2. 102、基于51单片机手机无线充电器锂电池存电系统设计
  3. 【趣学算法】贪心算法
  4. java web前端_JavaWeb前端: JavaScript 简介
  5. Exadata中Infiniband交换机升级
  6. 康师傅饮料瓶盖编码泄漏 10万乐视会员流入黑市
  7. Socket传输信息或文件
  8. 东南大学计算机学院几个班,东南大学,最新专业录取数据分析:三大专业一个班,学霸最喜欢...
  9. Smark Link 双上行组网,断开环路
  10. 零基础怎么学测试?2022史上最全软件测试学习路线图+教程分享