java实现批量去除图片水印 2022-10-29 13:21 1082阅读 0赞 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 图片添加水印(文字水印+图片水印) 一、图片水印(水印文件覆盖到源文件上) / @param buffImg 源文件(BufferedImage) @par 曾经终败给现在/ 2023年01月09日 15:50/ 0 赞/ 144 阅读
相关 java实现批量去除图片水印 java实现批量去除图片水印 直接上代码 package com.example.picutil; import javax.imageio.ImageIO 超、凢脫俗/ 2022年10月29日 13:21/ 0 赞/ 1083 阅读
相关 Java 实现图片水印之水印图片(SpringMVC + Jsp) > 图片水印不仅水印文字还可以是图片,本次实现图片水印之水印图片,以后有需要可以用个代码批量处理自己的图片了。 大家先看效果图 ![这里写图片描述][201605101 小灰灰/ 2022年08月22日 01:20/ 0 赞/ 210 阅读
相关 Java 实现图片水印之文字水印(SpringMVC + Jsp) > 看之前要先对SpringMVC 有点了解。。。 直接先看效果图 ![这里写图片描述][20160509131218760] ![这里写图片描述][20160509 叁歲伎倆/ 2022年08月22日 00:25/ 0 赞/ 206 阅读
相关 去除CSDN上传的图片水印 近日,发觉上传到CSDN的图片总是会带有水印,不仅影响美观,而且图片质量也会有所下降。为了解决这个问题,搜索了一些解决办法,因此记下,也以备他人之需。 第一步:点击富文 矫情吗;*/ 2022年05月20日 10:15/ 0 赞/ 197 阅读
相关 去除fusionchartsforflex水印 由于项目的需要,需要做一些图形(如柱壮图、双Y轴、立体图等)来展示数据。项目使用的是flex+java+spring+blazeds 。所以就采用了fusionchartsfo 青旅半醒/ 2022年02月25日 05:18/ 0 赞/ 1150 阅读
相关 转载_纯Java代码批量去除图片文字水印 [http://www.oicqzone.com/pc/2017062023844.html][http_www.oicqzone.com_pc_2017062023844.h 灰太狼/ 2022年02月14日 00:25/ 0 赞/ 430 阅读
相关 CSDN博客图片水印|自定义水印|去除水印 参考博文1:[https://blog.csdn.net/stereohomology/article/details/54561782][https_blog.csdn.ne 柔光的暖阳◎/ 2021年12月21日 07:19/ 0 赞/ 1416 阅读
相关 java实现图片添加水印 转载至大神博客[https://blog.csdn.net/top\_code/article/details/71756529][https_blog.csdn.net_to 淡淡的烟草味﹌/ 2021年12月10日 05:47/ 0 赞/ 374 阅读
相关 CSDN博客去除图片水印 在写博客的时候,我发现上传的图片右下角被强制加上了丑丑的水印,对于完美主义者的我来说,简直不能忍! ![70][] 我理想中的效果图是这样的,没有水印,干净清爽 ![20 傷城~/ 2021年12月09日 02:31/ 0 赞/ 598 阅读
还没有评论,来说两句吧...