Java 将图片转换为素描图

练习的时候突然想把自己几张照片处理为素描图,到网上查了一下没找到详细的Java实现代码。自己参考着http://sharehoo.cn/159058786244608.html这里的描述写了一下。

一、转换步骤

  1. 将RGB图转化为灰度图。
  2. 灰度图进行反色操作。
  3. 对步骤2中的图片进行高斯模糊。
  4. 将步骤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 将图片转换为素描图相关推荐

  1. JAVA 将图片转换为Base64编码

    https://www.cnblogs.com/ywlx/p/4544179.html 这里使用的jar包是commons-codec-1.10.jar; import java.io.FileInp ...

  2. Java | 将图片转换为txt文件

    一.描述 将图片转成字符画的形式,存储在 txt 文件里面. 二.源代码 ImageConvertTool.java import javax.imageio.ImageIO; import java ...

  3. Java 实现图片转换为ICO以及多种格式图片之间转换

    详细信息请访问我的GitHub网站:https://github.com/HuBoZhi/image4j

  4. java gif转jpg_Java gif图片转换为jpg格式

    下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...

  5. java gif转jpg_Java gif图片转换为jpg格式|chu

    下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...

  6. java gif jpg_Java gif图片转换为jpg格式

    下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...

  7. JAVA实现bmp转换JPEG_Java gif图片转换为jpg格式

    下面通过代码给大家介绍Java gif图片转换为jpg格式,具体代码如下所示: if(fileName.toLowerCase().endsWith(".gif")){//由于头像 ...

  8. opencv java 灰度_如何使用Java将图像转换为灰度?

    在Java语言编程中,如何使用Java将图片转换为灰度? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2.0-0.h ...

  9. java 图片转成base64编码_java语言中如何将一个图片转换为base64编码的数据呢?

    摘要: 下文讲述java语言中将图片转换为base64编码的方法分享,如下所示: 例: /* file为图片文件对象 filePath为转换后base64的存储位置 */ public static ...

最新文章

  1. 自动驾驶中常用的四类机器学习算法
  2. 需求获取安排计划书_创业型公司商业计划书PPT怎么写?才是投资人最想看的,免费领取...
  3. 论文排版怕翻车?这个排版神器赶紧用起来!
  4. 【做题记录】max-min+1=len 区间计数
  5. C语言——数组、函数、指针
  6. 2016中国国际大数据大会预热活动启航,首场沙龙聚焦精准营销
  7. 花音机器人_【扑杀花音攻略组】超弩级光机器人攻略
  8. 函数----MoveWindow
  9. 安卓音频处理相关资料集合贴
  10. 关于人生的十句经典的话! .
  11. Mysql 更改密码详解及设置免密登录
  12. [转]自定义UITableView各种函数
  13. 新版犀牛书该不该入手?
  14. AI对话机器人实现原理
  15. wpsa4排版_WPS表格 排版 成a4纸 能打印格式 ! 大神们求教
  16. Android基于百度OCR识别图片中的文字
  17. 权威数据:百度9月后最新算法转SEOwhy
  18. Python爬虫:老兵不死,用数据纪念2019男篮世界杯
  19. 【Mysql】Mysql GTID复制进程出现异常,出现断点
  20. 集成第三方SDK——支付宝支付

热门文章

  1. aiff是什么格式?aiff怎么转mp3?
  2. [Git] 017 加一条分支,享双倍快乐
  3. plupload实现多文件上传
  4. java测试生成中征码(数字)
  5. 区块链的安全问题(乱序时间戳,重入攻击)
  6. android 通讯录恢复,安卓手机通讯录丢失怎么找回?四个步骤教会你!
  7. NLP学习笔记41-递归神经网络
  8. Kubernetes CKS【24】---System Hardening - Kernel Hardening Tools(seccomp)
  9. dialog弹出时,点击dialog之外的地方时,dialog不消失。
  10. 关于微信分享申请应用APPkey时该注意的地方