java image filters[02]-过滤器初探
图片缩放应用比较多,我们看看imageFilters提供的ScaleFilter怎么完成这项工作。
首先了解怎么调用过滤器,实例代码如下:
public void imageScale(String fromPath, String toPath, int width, int height)throws IOException {// 定义“缩放过滤器”ScaleFilter scaleFilter = new ScaleFilter(width, height);BufferedImage fromImage = ImageIO.read(new File(fromPath));//BufferedImage toImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 缩放处理scaleFilter.filter(fromImage, toImage);// 写回指定目标文件ImageIO.write(toImage, "jpg", new File(toPath));}
效果如下所示:
原图:
处理后:
这里没有做等比例缩放,要想实现这个功能——在图片长宽做相应处理即可!
--------------------------------------
来了解下ScaleFilter内部怎么处理的!
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;}
关键类:
- BufferedImage
- Image
- Graphics2D
-----------------------------------------------
图片黑白处理(去颜色)
public void gray(String fromPath, String toPath) throws IOException {// 定义过滤器GrayscaleFilter filter = new GrayscaleFilter();BufferedImage fromImage = ImageIO.read(new File(fromPath));int width = fromImage.getWidth();int height = fromImage.getHeight();BufferedImage toImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);//for (int i = 0; i < width; i++) {for (int j = 0; j < height; j++) {int rgb = fromImage.getRGB(i, j);// 过滤int grayValue = filter.filterRGB(i, j, rgb);toImage.setRGB(i, j, grayValue);}}//ImageIO.write(toImage, "jpg", new File(toPath));}
效果:
内部实现原理:
public int filterRGB(int x, int y, int rgb) {int a = rgb & 0xff000000;int r = (rgb >> 16) & 0xff;int g = (rgb >> 8) & 0xff;int b = rgb & 0xff;
// rgb = (r + g + b) / 3; // simple averagergb = (r * 77 + g * 151 + b * 28) >> 8; // NTSC lumareturn a | (rgb << 16) | (rgb << 8) | rgb;}
注意点:还有一个过滤器是GrayFilter,注意和这里的GrayscaleFilter予以区别。
java image filters[02]-过滤器初探相关推荐
- Intel Realsense D435 Post-processing filters 后处理过滤器(用于消除图像的黑洞)
官方链接:Post-processing filters 文章目录 后处理过滤器 筛选器说明 抽取滤波器(抽取过滤器)Decimation Filter 空间边缘保留滤镜 Spatial Filter ...
- Java培训总结:过滤器链的实现方法、配置和案例分析
今天小千给大家分享的是Java培训总结:过滤器链的实现方法.配置和案例分析. 过滤器能够对网站中的各种内容进行过滤(页面.Servlet.图片.文件),可以在网站内容请求和响应时进行一些操作,完成一些 ...
- Java后端自顶向下方法——过滤器与回调函数
Java后端自顶向下方法--过滤器与回调函数 (一)回调函数与lambda表达式 在讲过滤器的原理之前,我们先来了解一下什么是回调函数.我们在平时开发中,经常会遇到模块之间的互相调用,调用的方式主要分 ...
- Java 集合系列02之 Collection架构
概要 首先,我们对Collection进行说明.下面先看看Collection的一些框架类的关系图: Java 集合系列02之 Collection架构 Collection是一个接口,它主要的两个分 ...
- Java泛型解析(02):通配符限定
Java泛型解析(02):通配符限定 考虑一个这种场景.计算数组中的最大元素. [code01] public class ArrayUtil {public static <T> ...
- 微信公众号Java开发-笔记02【开发接入准备、开发接入】
学习视频网址:哔哩哔哩网站 微信公众号开发-Java版 [P01-P02]微信公众号Java开发-笔记01[微信公众号介绍.开发环境搭建] [P03-P04]微信公众号Java开发-笔记02[开发接入 ...
- 用java写敏感词过滤器的代码
用java写敏感词过滤器的代码 这里采用动态代理,所以要创建proxy代理对象,利用代理,来增强某些方法(getParameter方法.getParameterMap方法.getParameterVa ...
- Java图片gh颜色渐变_强大的Java图像滤镜特效类库Java Image Filters
Java Image Filters是一款基于Java的图像处理类库,特别是在图像滤镜特效方面,Java Image Filters简直就是强大到天衣无缝.它几乎提供了PS上大部分的图像特效.比如反色 ...
- Java学习记录02
Java学习记录02 在学习中,博客的书写不可缺少,相应的markdown基本语法也要掌握,下面是自己在CSDN上查找并学习的链接:Markdown语法 2.6项目实训:基于控制台设计简易打折与累加计 ...
最新文章
- python函数第二次运行报错_Python学习笔记2-函数、高级特性
- 第三代测序技术的方法原理及其在生物领域的应用
- hdu4020简单想法题
- 微软Windows 8最新幻灯片泄露
- activiti工作流引擎入门教程
- html5 规定input域,html5中关于input用法
- 直接打开php非法请求
- Hibernate备忘录
- spark共享变量(广播变量Broadcast Variable,累加器Accumulators)
- 设计模式学习笔记三:工厂方法模式
- MySQL基础3-SQL语言
- 七个习惯之三:要事第一
- 计算机操作系统32位,电脑操作系统中32位和64位到底有哪些区别
- composer.lock(锁文件)到底要不要提交到项目的版本库中?
- 蜕变测试(metamorphic testing)经典论文阅读 Compiler Validation via Equivalence Modulo Inputs
- mysql 1197_mysql主从不同步报错Last_Errno 1197
- dlg.DoModal()介绍
- OSChina 周二乱弹 ——爸爸陆陆续续回家了
- Ubuntu下U盘没有不能新建粘贴文件 报错 [sdf] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
- 软件工程就业前景怎么样?大家对这个职业是否有什么误区?
热门文章
- jQuery中常用的函数方法总结
- matlab图像处理命令(二)
- 【ffmpeg】编译时报错:error: undefined reference to `av...
- 【linux】shell中整数运算的加、减、乘、除
- java分代技术_JVM调优总结(六):分代垃圾回收详述2
- java windows wrapper_Java Service Wrapper 使用(windows)
- hibernate 复合主键 根据主键删除_hibernate封装Utils工具类
- 小程序画布,随机24个数显示在画布上面,不可重叠
- [微信小程序]滚动选择器
- iOS Category小举例