java 手绘_用普通照片生成手绘素描

本文介绍了一个使用Java实现将普通照片转化为类似手绘素描效果的程序。通过去色、反相、高斯模糊和叠加等步骤,最终生成黑白的素描图像。代码包括去色、反相、叠加和高斯模糊等图像处理函数。
摘要由CSDN通过智能技术生成

Java对图像的处理,具有相当强的表现能力,下列程序可以将普通照片生成类似于手绘的素描。

import java.awt.color.ColorSpace;

import java.awt.image.BufferedImage;

import java.awt.image.ColorConvertOp;

import java.io.File;

import javax.imageio.ImageIO;

public class sketch {

public static void main(String[] args) throws Exception{

String file1 = "D:/1.jpg";//原文件

String file2 = "D:/2.jpg";//素描

File inputFile = new File(file1);

BufferedImage old = ImageIO.read(inputFile);

//去色

BufferedImage b1 = discolor(old);

//反相

b1 = invert(b1);

//高斯模糊

float[][] matric = gaussian2DKernel(3, 3f);

b1 = convolution(b1, matric);

//叠加

b1 = deceaseColorCompound(old, b1);

//黑白

ColorSpace cs1 = ColorSpace.getInstance(ColorSpace.CS_GRAY);

ColorConvertOp op1 = new ColorConvertOp(cs1, null);

BufferedImage b2 = new BufferedImage(old.getWidth(), old.getHeight(), BufferedImage.TYPE_INT_RGB);

op1.filter(b1, b2);

ImageIO.write(b2, "jpg", new File(file2));

System.out.println("生成素描");

}

//去色

public static BufferedImage discolor(final BufferedImage sourceImage) {

final int width = sourceImage.getWidth();

final int height = sourceImage.getHeight();

final BufferedImage retImage = new BufferedImage(width, height,

BufferedImage.TYPE_INT_ARGB);

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++) {

final int color1 = sourceImage.getRGB(i, j);

final int a1 = (color1 >> 24) & 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值