java实现批量去除图片水印
java实现批量去除图片水印
直接上代码
package com.example.picutil;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.net.ssl.HttpsURLConnection;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;/*** 去掉水印的工具类*/
public class ImageConverter {private static List<File> fileList = new ArrayList<File>();public static void main(String[] args) {//图片所在的根目录 , 图片去除水印后的存储目录convertAllImages("D:\\images\\1.png", "D:\\images\\demo1\\1.png"); //支持批量去除图片水印
// convertAllImages("D:\\images", "D:\\images");}private static void convertAllImages(String dir, String saveDir) {File dirFile = new File(dir);File saveDirFile = new File(saveDir);dir = dirFile.getAbsolutePath();saveDir = saveDirFile.getAbsolutePath();loadImages(new File(dir));for (File file : fileList) {String filePath = file.getAbsolutePath();String dstPath = saveDir + filePath.substring(filePath.indexOf(dir) + dir.length(), filePath.length());System.out.println("converting: " + filePath);replaceColor(file.getAbsolutePath(), dstPath);}}public static void loadImages(File f) {if (f != null) {if (f.isDirectory()) {File[] fileArray = f.listFiles();if (fileArray != null) {for (int i = 0; i < fileArray.length; i++) {
//递归调用loadImages(fileArray[i]);}}} else {String name = f.getName();if (name.endsWith("png") || name.endsWith("jpg")) {fileList.add(f);}}}}private static void replaceFolderImages(String dir) {File dirFile = new File(dir);File[] files = dirFile.listFiles(new FileFilter() {public boolean accept(File file) {String name = file.getName();if (name.endsWith("png") || name.endsWith("jpg")) {return true;}return false;}});for (File img : files) {replaceColor(img.getAbsolutePath(), img.getAbsolutePath());}}private static void replaceColor(String srcFile, String dstFile) {try {Color color = new Color(255, 195, 195);replaceImageColor(srcFile, dstFile, color, Color.WHITE);} catch (IOException e) {e.printStackTrace();}}public static void replaceImageColor(String file, String dstFile, Color srcColor, Color targetColor) throws IOException {URL http;if (file.trim().startsWith("https")) {http = new URL(file);HttpsURLConnection conn = (HttpsURLConnection) http.openConnection();conn.setRequestMethod("GET");} else if (file.trim().startsWith("http")) {http = new URL(file);HttpURLConnection conn = (HttpURLConnection) http.openConnection();conn.setRequestMethod("GET");} else {http = new File(file).toURI().toURL();}BufferedImage bi = ImageIO.read(http.openStream());if(bi == null){return;}//Color wColor = new Color(255, 255, 255);//白色Color wColor = new Color(238, 243, 249);//浅灰色for (int i = 0; i < bi.getWidth(); i++) {for (int j = 0; j < bi.getHeight(); j++) {
//System.out.println(bi.getRGB(i, j));int color = bi.getRGB(i, j);Color oriColor = new Color(color);int red = oriColor.getRed();int greed = oriColor.getGreen();int blue = oriColor.getBlue();
//粉色if (greed < 190 || blue < 190) {} else {
//去掉粉色水印(粉色替换为白色)
// if (red == 255 && greed > 180 && blue > 180) {
// bi.setRGB(i, j, wColor.getRGB());
// }
//去掉灰色水印(灰色替换为白色)
// if (red == 229 && greed == 229 && blue == 229) {
// bi.setRGB(i, j, wColor.getRGB());
// }
//去掉浅灰色水印(灰色替换为白色或替换为浅灰色)if (red >170 && greed > 170 && blue > 170) {bi.setRGB(i, j, wColor.getRGB());}}}}String type = file.substring(file.lastIndexOf(".") + 1, file.length());Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName(type);ImageWriter writer = it.next();File f = new File(dstFile);f.getParentFile().mkdirs();ImageOutputStream ios = ImageIO.createImageOutputStream(f);writer.setOutput(ios);writer.write(bi);bi.flush();ios.flush();ios.close();}
java实现批量去除图片水印相关推荐
- Java使用ffmpeg去除图片水印
/*** 去除图片水印*/@Testpublic void deleteLogo(){/*** 对delogo滤镜的说明:- x,y:水印的左上方坐标- w,h: 水印的宽高- show: 可选参数, ...
- 快速批量去除图片水印方法大全~~
原文地址:http://blog.163.com/simonyao_cool/blog/static/16512555720107311858809/ 去水印是不复杂啦,可几千页下来,自己用橡皮抹会抹 ...
- 转载_纯Java代码批量去除图片文字水印
http://www.oicqzone.com/pc/2017062023844.html 问题 做习题的小伙伴在做试题的时候需要把Word文档中的习题切图制作成试题,由于没注意到Word转出的图片上 ...
- java去除图片水印的解决办法
原文地址:http://www.oicqzone.com/pc/2017062023844.html [color=red]去除水印: 其实就是把水印的颜色替换为背景色(ARGB) /** * * 分 ...
- 基于多元线性回归去除图片水印(Java版)
前提 采集的图片有淡淡的水印,为了避免不必要的麻烦,需要淡化或去除水印.图片如下所示: Java自带的工具可以对图片指定位置(x,y)的颜色(r,g,b)进行替换.如果图片上下左右颜色一致,则可进行颜 ...
- 图片怎么去水印?如何批量无痕去除图片水印
网址:图片怎么去水印https://www.shuiyinyun.com/inpaint-image.html 批量去图片水印步骤: 效果图:
- 怎么去水印不破坏原图?这4个方法,无痕去除图片水印
平时在网上下载图片的时候,经常会有带水印的情况,怎么才能去掉图片的水印呢?今天就给大家分享4个好用的图片去水印工具,操作简单使用方便,主要是去水印效果好,去水印后几乎看不出水印痕迹! 1.imgcle ...
- 批量去图片水印神器,小白看完就会!
图片好看归好看,美中不足的就是,有水印.这个问题在大家看来,是不是常有的事?看到这些漂亮的图片都有严重影响美观的水印,看上去很不爽吧?没错,小编也是很不爽! 今天我们这里要讲到的是,如何批量去除图片上 ...
- 去除图片水印_只需一键,即可快速去除图片水印!如此简单的方法,谁不知谁吃亏...
现在有很多小伙伴都会到网上找一些好看的图片保存下来,但是很多时候我们找到的图片都是带有水印的,虽然水印很小,但是看起来也是怪怪的.别担心,今天小编将分享几个简单又好用的图片去水印方法给大家,有需要的小 ...
- 【批量去除图片的背景】
有一个需求,需要批量去除图片的背景,在网上搜到下面这个方法:[python]backgroundremover 去除背景_LiuPig刘皮哥的博客-CSDN博客GitHubhttps://github ...
最新文章
- R语言可视化绘图基础知识详解
- 从自监督学习主流方法、最新工作进展,看未来前景研究方向
- 如何用python画圆形的代码-简单实现python画圆功能
- Silverlight学习之——事件编程
- python判断是否是完数_python判断是否完数
- 写 Python 爬虫 5 年,复制粘贴一直是我赖以生存的核心技能,直到我看到这些腾讯阿里大佬们的技术公众号,太强了...
- android p正式版,国内首家!一加正式推送Android P正式版
- Spring Boot Learning(模版引擎)
- java 变量初始化_浅谈Java变量的初始化顺序详解
- scala的数值类型(三)
- socket 例子 java_java socket例子
- 【答辩问题】计算机专业本科毕业设计答辩的一般程序
- [原创]Linux实现服务延迟启动
- HTML5标准学习 – 简介
- 注册机无法运行,显示系统资源不足,无法完成请求的服务
- 如何利用魔棒工具抠图_10秒教你如何用PS魔棒工具抠图
- 吉他音阶训练——问题解答
- C++_008_数据结构_线性表_普通线性表
- python面向对象编程指南([美stevenflott_Python面向对象编程指南 ([美]StevenFLott洛特) 中文_IT教程网...
- 文本分析简历项目收集-----机器学习(仅供参考)