当前位置: 首页 > 编程日记 > 正文

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予以区别。

相关文章:

一定要禁用调试模式

在部署生产应用程序或进行任何性能测量之前&#xff0c;始终记住禁用调试模式。如果启用了调试模式&#xff0c;应用程序的性能可能受到非常大的影响。

Java“拍了拍”你,面试其实没那么难...

后疫情时代&#xff0c;连程序员这个多金的职业也遭受到了一定程度的打击。从各大招聘网站和多次面试经历中&#xff0c;相信大家已经意识到&#xff0c;面试官对程序员技能体系和项目经验考核似乎更严苛了。你在面试中常常为什么苦恼呢&#xff1f;简历撰写&#xff1f;数据算…

单据自动转换并审核的方法示例

需求要点&#xff1a;在单据A的界面点击“自动转换”&#xff0c;则自动产生审核态的单据B&#xff1b;若单据B不满足审核条件&#xff0c;则维持“提交”态&#xff1b;若单据B不满足保存校验&#xff0c;则维持“暂存”态&#xff1b;若转换失败&#xff0c;给出界面提示。实…

优化 Web 服务器计算机和特定应用程序的配置文件以符合您的特定需要

默认情况下&#xff0c;ASP.NET 配置被设置成启用最广泛的功能并尽量适应最常见的方案。因此&#xff0c;应用程序开发人员可以根据应用程序所使用的功能&#xff0c;优化和更改其中的某些配置&#xff0c;以提高应用程序的性能。下面的列表是您应该考虑的一些选项。 仅对需要的…

3年编程经验无名校背景,全栈小哥是如何拿下Twitter Offer的?

作者 | zhiachong责编 | Aholiab头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;外国小哥zhia是个有面试绝技的人&#xff0c;他只有三年的编程经验&#xff0c;并且没有任何名牌大学的光环&#xff0c;两年多以前&#xff0c;他同时获得…

Sco Unixware 7.1.3企业版服务器安装视频教程

Sco Unixware 7.1.3企业版服务器安装视频教程 UnixWare 7.1.3是最先进的工业标准Intel和AMD处理器系统运行平台。UnixWare 7.1.3是关键业务解决方案的可靠基础&#xff0c;具备可伸缩性、可靠性、安全性突出和物美价廉的特点。其中UnixWare 7.1.3企业版为中高端数据库服务器及应…

牛!Python 也能实现图像姿态识别溺水行为了!

作者 | 李秋键责编 | Carol封图 | CSDN 下载自视觉中国众所周知随着人工智能智能的发展&#xff0c;人工智能的落地项目也在变得越来越多&#xff0c;尤其是计算机视觉方面。所以今天我们也是做一个计算机视觉方面的训练&#xff0c;用python来判断用户溺水行为&#xff0c;结合…

Asp.net中多项目共享Session

1. 建立一个空白解决方案blank solution&#xff0c;如&#xff1a;d:/MyProject/MyProject.sln 2. 在d:/MyProject下建一个Web Application的根目录d:/MyProject/WebMis并设为http://localhost/WebMis的虚拟目录 3. 在WebMis目录下根据模块分别新建目录&#xff0c;如&#xf…

JQuery模板插件jquery.tmpl-动态ajax扩展

在上一篇JQuery模板插件-jquery.tmpl中介绍了这款插件。有时我们需要去动态的ajax去加载模板&#xff0c;或者数据&#xff0c;根据url参数或者其他信息加载不同的模板&#xff0c;数据。在我的某个项目中有这个需求&#xff0c;所以特地写成jquery工具函数&#xff0c;加入了本…

《JAVA-枚举》

2019独角兽企业重金招聘Python工程师标准>>> 枚举&#xff1a;枚举在C/C/c#/java中&#xff0c;是一个被命名的整型常数的集合&#xff0c;枚举在日常生活中很常见。 表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,就是一个简单的例子 既然讲了枚…

在ASP.NET中使用WINDOWS模式登录SQL数据库

作者&#xff1a;未知 请作者速与本人联系经常发现有用户使用WINDOWS模式登录SQL SERVER&#xff0c;结果失败&#xff0c;提示&#xff1a; 用户 KEKC/ASPNET 登录失败。 说明: 执行当前 Web 请求期间&#xff0c;出现未处理的异常。请检查堆栈跟踪信息&#xff0c;以了解有…

时髦而精巧的Iphone墙纸收集

Iphone5如此的流行&#xff0c;我觉得我们有必要为我们的读者收集一套时尚的iphone墙纸。 知道设计和开发社区是多么喜欢装饰他们的移动设备&#xff0c;我们收集了各大社区最好的iphone墙纸&#xff0c;帮助你更好的装饰你的iphone设备。 因为有如此多的墙纸设计&#xff0c;我…

谷歌排名第一的编程语言,死磕它这两点,小白也能学的会!不信你看!

谷歌排名第一的编程语言时什么&#xff1f;毫无疑问&#xff1a;肯定是 Python。也难怪&#xff0c;作为大数据时代和人工智能时代的必备语言&#xff0c;Python 的优点太多了&#xff0c;语言简洁、易学、开发效率高、可移植性强......另外&#xff0c;更牛的地方是目前最热门…

UVA11059 Maximum Product

问题链接&#xff1a;UVA11059 Maximum Product。基础级练习题&#xff0c;用C语言编写程序。 题意简述&#xff1a;输入n个整数序列&#xff0c;有正有负&#xff0c;求这个序列中最大连续累乘的子序列&#xff0c;其最大的值为多少。如果结果为负数&#xff0c;则输出0。 问题…

.NET代码的保护

1没有绝对的保护 加密和破解都相对的 2用vs2002/2003/开发的代码 删除.cs/.vb文件只留 .dll和.aspx可以达到加密若要加密.aspx 可以把.aspx代码写入.csvs2005 beta1可以连.aspx都打包 3但是 dll还可以被反编译 所以高级的是加入混淆器不过这样也不是绝对的还是可以反编译混淆…

走向DBA[MSSQL篇] 面试官最喜欢的问题 ----索引+C#面试题客串

对大量数据进行查询时,可以应用到索引技术。索引是一种特殊类型的数据库对象&#xff0c;它保存着数据表中一列或者多列的排序结果&#xff0c;有效地使用索引可以提高数据的查询效率。大家面试初级、中级或者高级程序员的时候应该大部分都会被问到这样一些问题&#xff0c;你了…

“编程能力差的程序员,90%会输在这点上”谷歌AI专家:其实都是瞎努力

最近几年&#xff0c;我看过市面上很多 Python和人工智能的教程和书籍&#xff0c;它们大都这样讲&#xff1a;先从 Python 人工智能的历史讲起开始&#xff0c;再介绍的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;最后学习机器学习、深度学习…

查询表空间使用情况

2019独角兽企业重金招聘Python工程师标准>>> SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) "表空间使用大小", total / (1024 * 1024 * 1024) "表空间大小(…

一只端午节鸭蛋粽子的背后:AI 与农业

作者 | 硬核云顶宫责编 | Carol封图 | CSDN 下载自视觉中国今年的端午节&#xff0c;食品界的营销鬼才五芳斋又发了最新广告——《朋友们蘸起来》&#xff0c;这则视频通过一种科幻大片的风格展示了农业与科技的完美结合&#xff0c;可以说在一只端午节粽子背后有AI的养猪、种的…

一些实用的 Javascript 代码

οncοntextmenu"window.event.returnvaluefalse" 将彻底屏蔽鼠标右键<table border οncοntextmenureturn(false)><td>no</table> 可用于Table <body onselectstart"return false"> 取消选取、防止复制 οnpaste"return fa…

围观文件穿越操作

1. 打开文件用IoCreateFile&#xff0c;其他比较好发irp的&#xff08;比如删除操作&#xff09;走FSD irp 删除文件部分处理了删除正在运行的exe镜像部分&#xff0c;做法是方法是IAT Hook MmFlushImageSection 但是这样对于独占文件依旧不能处理&#xff0c;只好等到关机…

图论 - 欧拉回路

Description 欧拉回路是指不令笔离开纸面&#xff0c;可画过图中每条边仅一次&#xff0c;且可以回到起点的一条回路。现给定一个图&#xff0c;问是否存在欧拉回路&#xff1f;Input 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数&#xff0c;分别是节点数N (…

学习 Linux,101: 引导系统

2019独角兽企业重金招聘Python工程师标准>>> 系列文章&#xff1a; http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?search_by%E5%AD%A6%E4%B9%A0linux101 从 BIOS 到运行 Linux 系统 引导顺序 在我们深入了解启动加载程序&#xff08;比如 LI…

用Enter键取代tab键

1. this.TextBox1.Attributes.Add("OnKeyPress","<script>if keycode13 keycode9; return false;</script>");2. <input typetext οnkeydοwn"if (event.keyCode 13) event.keyCode 9;">

程序员:我受够了!不想再在小厂里干Java了!

你是否熟悉这样的情形&#xff1a;每天10点到公司&#xff0c;打开电脑&#xff1a;10个小时的增删改查&#xff0c;搬砖写代码的一天就这样开始了。刚毕业时候的你踌躇满志&#xff0c;按照自己的原定计划&#xff0c;这时候应该混到了阿里P6。可现在在小厂苦苦挣扎&#xff0…

iOS中UISearchBar(搜索框)使用总结

2019独角兽企业重金招聘Python工程师标准>>> iOS中UISearchBar(搜索框)使用总结 初始化&#xff1a;UISearchBar继承于UIView&#xff0c;我们可以像创建View那样创建searchBar UISearchBar * bar [[UISearchBar alloc]initWithFrame:CGRectMake(20, 100, 250, 40)…

Linux常用性能检测命令

一、uptime Uptime命令的显示结果包括服务器已经运行了多长时间&#xff0c;有多少登陆用户和对服务器性能的总体评估&#xff08;load average&#xff09;。load average值分别记录了上个1分钟&#xff0c;5分钟和15分钟间隔的负载情况&#xff0c;load average不是一个百…

怎样把DataGrid存放在ViewState中的无用数据卡掉

作者&#xff1a;无间道的博客http://www.cnblogs.com/wangsaokui/articles/10031.html 怎样把 DataGrid 存放在 ViewState 中的无用数据(有时候确实如此)卡掉&#xff0c;大家知道&#xff0c;一般而言DataGrid在ViewState中会存放表格中的所有数据&#xff0c;这样会导致View…

深度学习先驱 Yann LeCun 被骂到封推!AI 偏见真该甩锅数据集?

整理 | 夕颜出品 | CSDN&#xff08;ID:CSDNnews&#xff09;最近&#xff0c;人工智能领域又发生了一次热热闹闹的争论&#xff0c;随后演变成一场偏离轨道的争吵&#xff0c;目前以 Yann 道歉封推暂告一段落......争论来龙去脉这次争论的主角是图灵奖得主、人工智能标杆性人物…

JS加强学习-DOM学习01

JavaScript由三个部分组成&#xff1a;ECMAScript、DOM、BOM。前面已经学习了ECMAScript中的基础内容&#xff0c;现在可以开始学习DOM部分了&#xff0c;在DOM中更多的是实际效果的展现。 1. DOM定义 DOM&#xff1a;document object model 文档对象模型 它是将整个页面文档封…