java图片去掉水印

代码

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 AAAA {

private static List fileList = new ArrayList();

public static void main(String[] args) {

//图片所在的根目录 , 图片去除水印后的存储目录
convertAllImages(“D:\江西\江西.jpg”, “D:\IcPhoto1\江西.jpg”); //支持批量去除图片水印
}

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 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图片去掉水印相关推荐

  1. java 图片加水印不失真_java实现图片加水印效果

    图片加水印代码,这些代码不常用,但是用到的时候需要注意的地方也挺多的,每次都重写比较麻烦,记下来备忘.代码是图片加水印的一般流程,可根据实际项目需要自行修改. 注:代码在JPG和PNG格式图片下测试通 ...

  2. Java 图片加水印

    <!-先创建文件夹,以便图片存放-!> private void newFolder(String folderPath) { String filePath = folderPath; ...

  3. java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...

  4. [摘抄-Java-学习中]Java 图片叠加水印文字自动换行

    从网上找到了前辈们写的代码,然后优化整理下,实现了图片叠加水印,也就是文字叠加,然后再实现根据总文字的长度进行自动换行叠加文字 importjavax.imageio.ImageIO; importj ...

  5. java pdfreader去除水印_(最新)JAVA使用Icepdf 5.0.6 pro的PDF转图片去掉水印的方法...

    最近发现PDF转图片各种开源工具PDFBOX.PDFRenderer.jpedal都不好用,中文各种蛋疼,但是试用了一下Icepdf相当强大,唯一不足就是生成的图片带有官方水印,下面介绍一下去掉官方水 ...

  6. java图片去掉文字_关于java:Java-添加删除PPT文本和图片水印

    在前文中,我介绍过如何给PDF文档增加文本和图片水印.本文将具体解说如何增加.删除PPT文本和图片水印. 此次代码示例所用到的工具是Free Spire.Presentation for Java.F ...

  7. CSDN图片去掉水印

    1.点创作中心 2.点设置,然后博客设置 3.然后关掉图片水印啦

  8. java图片去掉文字,Java 移除html,图片 链接转文字

    ", "\r\n"); // 替换为换行 content = content.replaceAll(" ", "\r\n"); S ...

  9. java图片去掉文字_java解出图片中的文字

    测试代码:public static String crackImage(String filePath) { File imageFile = new File(filePath); ITesser ...

  10. java 水印 位置_Java实现图片加水印且控制位置和透明度

    Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...

最新文章

  1. 华为云BU总裁:如何把AI从噱头变为生产力?
  2. 看图说话:用户标签可以这样轻松创建
  3. 如何设置使eclipse修改代码不重启tomcat
  4. Python基础之基本数据类型的总结
  5. 你不知道的 Chrome DevTools 玩法
  6. 【canvas系列】canvas实现“ 简单的Amaziograph效果”--画对称图【强迫症福利】
  7. JavaScript中关于setTimeout和setInterval的使用
  8. Kotlin学习笔记 第三章 函数 高阶函数 lambda表达式 内联函数
  9. 面试官:什么是 Reactor 和 Proactor
  10. python串口操作_Python Serial串口基本操作(收发数据)
  11. 【李宏毅2020 ML/DL】P5-7 Gradient Descent_1-3
  12. 最好的5个C++ 网站
  13. 继承接口Java多线程(二)、启动一个线程的3种方式
  14. 如何手动优化神经网络模型
  15. mysql筛选包含某个字符_mysql判断某个字符串是否包含某个字符串的3种方法
  16. 计算机用什么配置好电脑,买电脑主要看哪些配置 决定电脑好坏的关键
  17. 自动关闭QQ迷你首页的小程序(加上自己的一些理解)
  18. 【SpringBoot】文件上传(基础上传、上传文件限制、上传多个文件)
  19. rewrite break
  20. opencv图像处理-常见绘图函数

热门文章

  1. 逆转ACE《逆转裁判3》中文汉化版发布!
  2. python基础----Day05
  3. apachectl 命令详解-graceful 不中断原有连接,重新启动 Apache 服务器
  4. html把图片放到文章右边,怎么在文章中把图片放在文字的左边、右边、中 – 手机爱问...
  5. HDU 1374 求三角形外接圆的半径
  6. 「四年总结」一名程序猿的打怪升级之路
  7. 可重入锁模拟三个线程之间的通信
  8. C语言数字图像处理进阶---1 Photoshop图层算法
  9. 明星热图|童瑶、周迅、易烊千玺、张新成签约新品牌;李宇春、陈飞宇参加品牌活动...
  10. LayoutInflater.inflate()方法的深入理解