Java 将图片转换为素描图
Java 将图片转换为素描图
练习的时候突然想把自己几张照片处理为素描图,到网上查了一下没找到详细的Java实现代码。自己参考着http://sharehoo.cn/159058786244608.html这里的描述写了一下。
一、转换步骤
- 将RGB图转化为灰度图。
- 灰度图进行反色操作。
- 对步骤2中的图片进行高斯模糊。
- 将步骤1中的灰度图像和步骤三中的模糊反色图像混合。
二、准备
使用的是开源的JH Labs库:http://www.jhlabs.com/ip/filters/index.html,Java使用的时候需要下载图像处理类,地址为:http://www.jhlabs.com/ip/filters/download.html。
点击下载后解压,导入项目,将其打包成jar包,这样在别的项目里也可以很方便的使用它。我使用的是eclipse工具:
项目导入后:
导成jar包:
右键build.xml 选择Run As ,点击Ant build,成功之后的控制台:
生成的jar包:
到此为止,准备工作完成。
三、代码
1.在pom.xml里导入生成的jar包:
<dependency><groupId>pictureFilter.filter</groupId><artifactId>Filters</artifactId><version>0.0.1</version></dependency>
这里的groupId 和artifactId,version 根据自己的jar包的位置而定,我的jar包所在位置:
2.图片转换为素描图的核心代码:
package com.fanwei;import java.awt.CompositeContext;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.jhlabs.composite.ColorDodgeComposite;
import com.jhlabs.image.GaussianFilter;
import com.jhlabs.image.GrayscaleFilter;
import com.jhlabs.image.ImageUtils;
import com.jhlabs.image.InvertFilter;
import com.jhlabs.image.PointFilter;/*** 图片处理为素描图* @author 范伟带你打天下*/
public class PictureTestDemo {public static void main(String[] args) throws IOException {BufferedImage src = null; src=ImageIO.read(new File("D:\\test.jpg"));src = ImageUtils.convertImageToARGB(src); //图像灰度化PointFilter grayScaleFilter = new GrayscaleFilter(); BufferedImage grayScale = new BufferedImage(src.getWidth(),src.getHeight(),src.getType()); grayScaleFilter.filter(src,grayScale); //灰度图像反色BufferedImage inverted = new BufferedImage(src.getWidth(),src.getHeight(),src.getType()); PointFilter invertFilter = new InvertFilter(); invertFilter.filter(grayScale,inverted); //高斯模糊处理GaussianFilter gaussianFilter = new GaussianFilter(20);BufferedImage gaussianFiltered = new BufferedImage(src.getWidth(),src.getHeight(),src.getType()); gaussianFilter.filter(inverted,gaussianFiltered); // 灰度图像和高斯模糊反向图混合ColorDodgeComposite cdc = new ColorDodgeComposite(1.0f); CompositeContext cc = cdc.createContext(inverted.getColorModel(),grayScale.getColorModel(),null); WritableRaster invertedR = gaussianFiltered.getRaster();WritableRaster grayScaleR = grayScale.getRaster(); BufferedImage Composite=new BufferedImage(src.getWidth(),src.getHeight(),src.getType()); WritableRaster colorDodgedR = Composite.getRaster(); cc.compose(invertedR,grayScaleR,colorDodgedR); //输出做好的素描File outputfile =new File("D:\\saved.png"); ImageIO.write(Composite,"png",outputfile);}
}
效果展示:
大功告成!
总结
JH Labs这个开源库里还有很多有意思的滤镜,使用起来也很简单,快去试试吧!
Java 将图片转换为素描图相关推荐
- JAVA 将图片转换为Base64编码
https://www.cnblogs.com/ywlx/p/4544179.html 这里使用的jar包是commons-codec-1.10.jar; import java.io.FileInp ...
- Java | 将图片转换为txt文件
一.描述 将图片转成字符画的形式,存储在 txt 文件里面. 二.源代码 ImageConvertTool.java import javax.imageio.ImageIO; import java ...
- Java 实现图片转换为ICO以及多种格式图片之间转换
详细信息请访问我的GitHub网站:https://github.com/HuBoZhi/image4j
- java gif转jpg_Java gif图片转换为jpg格式
下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...
- java gif转jpg_Java gif图片转换为jpg格式|chu
下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...
- java gif jpg_Java gif图片转换为jpg格式
下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...
- JAVA实现bmp转换JPEG_Java gif图片转换为jpg格式
下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...
- opencv java 灰度_如何使用Java将图像转换为灰度?
在Java语言编程中,如何使用Java将图片转换为灰度? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2.0-0.h ...
- java 图片转成base64编码_java语言中如何将一个图片转换为base64编码的数据呢?
摘要: 下文讲述java语言中将图片转换为base64编码的方法分享,如下所示: 例: /* file为图片文件对象 filePath为转换后base64的存储位置 */ public static ...
最新文章
- 自动驾驶中常用的四类机器学习算法
- 需求获取安排计划书_创业型公司商业计划书PPT怎么写?才是投资人最想看的,免费领取...
- 论文排版怕翻车?这个排版神器赶紧用起来!
- 【做题记录】max-min+1=len 区间计数
- C语言——数组、函数、指针
- 2016中国国际大数据大会预热活动启航,首场沙龙聚焦精准营销
- 花音机器人_【扑杀花音攻略组】超弩级光机器人攻略
- 函数----MoveWindow
- 安卓音频处理相关资料集合贴
- 关于人生的十句经典的话! .
- Mysql 更改密码详解及设置免密登录
- [转]自定义UITableView各种函数
- 新版犀牛书该不该入手?
- AI对话机器人实现原理
- wpsa4排版_WPS表格 排版 成a4纸 能打印格式 ! 大神们求教
- Android基于百度OCR识别图片中的文字
- 权威数据:百度9月后最新算法转SEOwhy
- Python爬虫:老兵不死,用数据纪念2019男篮世界杯
- 【Mysql】Mysql GTID复制进程出现异常,出现断点
- 集成第三方SDK——支付宝支付
热门文章
- aiff是什么格式?aiff怎么转mp3?
- [Git] 017 加一条分支,享双倍快乐
- plupload实现多文件上传
- java测试生成中征码(数字)
- 区块链的安全问题(乱序时间戳,重入攻击)
- android 通讯录恢复,安卓手机通讯录丢失怎么找回?四个步骤教会你!
- NLP学习笔记41-递归神经网络
- Kubernetes CKS【24】---System Hardening - Kernel Hardening Tools(seccomp)
- dialog弹出时,点击dialog之外的地方时,dialog不消失。
- 关于微信分享申请应用APPkey时该注意的地方