java 去掉 时期中的图片,去除图片浅色背景(Java 实现)

完成与去除图片浅色背景(PIL实现)同样的任务,实现方式为 Java。不同的是,手写实现“加权法”灰度化,在灰度化的同时去除背景。

源码如下:

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

public class ImageDemo {

private static int colorToRGB(int alpha, int red, int green, int blue) {

int newPixel = 0;

newPixel += alpha;

newPixel = newPixel << 8;

newPixel += red;

newPixel = newPixel << 8;

newPixel += green;

newPixel = newPixel << 8;

newPixel += blue;

return newPixel;

}

/**

* 去除模版浅色背景

*

* @param inputPath 输入图片路径

* @param outputPath 处理后图片的输出路径

* @param outputFormat 输出格式(传入 ImageIO.write)

* @param threshold 过滤阈值

* @exception IOException if an error occurs during writing.

*/

public static void convert(String inputPath, String outputPath, String outputFormat, int threshold) throws IOException{

BufferedImage bufferedImage

= ImageIO.read(new File(inputPath));

BufferedImage grayImage =

new BufferedImage(bufferedImage.getWidth(),

bufferedImage.getHeight(),

bufferedImage.getType());

for (int i = 0; i < bufferedImage.getWidth(); i++) {

for (int j = 0; j < bufferedImage.getHeight(); j++) {

final int color = bufferedImage.getRGB(i, j);

final int r = (color >> 16) & 0xff;

final int g = (color >> 8) & 0xff;

final int b = color & 0xff;

int gray = (int) (0.3 * r + 0.59 * g + 0.11 * b);

if (gray > threshold) {

gray = 255;

}

int newPixel = colorToRGB(255, gray, gray, gray);

grayImage.setRGB(i, j, newPixel);

}

}

File newFile = new File(outputPath);

ImageIO.write(grayImage, outputFormat, newFile);

}

public static void main(String[] args) {

try {

convert("image/GettingStarted.png", "image/g1.png", "png", 175);

convert("image/Balance.png", "image/b1.png", "png", 175);

} catch (IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值