今天遇到一个问题,用户上传图片的时候,有些敏感信息 需要在图片上进行编辑一下(将敏感信息进行涂抹)
上传图片 在图片上记录用户涂抹的 坐标 (相对应左上角) 绘制 矩形框框
String waterString = "_water"; /** * 本功能实现了 在用户上传图片的时候,将敏感信息进行涂抹,并且在上传到图片服务器上 * @param objName 图片名称 * @param url 图片 url * @param waters 水印坐标 x,y,w,h|x,y,w,h (w 代表矩形框框的宽度 h 代表高度) * @return * @throws Exception */ @RequestMapping(value = "/uploadimg") @ResponseBody public String upload2waterImg(String objName,String url , String waters) throws Exception { String picUrl = "error"; InputStream iStream = null; ByteArrayOutputStream bos = null; ByteArrayInputStream bis = null; try { if(!StringUtils.isEmpty(url)&&!StringUtils.isEmpty(waters)){ URL imgUrl = new URL(url); iStream = imgUrl.openStream(); if(iStream!=null){ Image image = ImageIO.read(iStream); int width_img = image.getWidth(null); int height_img = image.getHeight(null); BufferedImage bufferedImage = new BufferedImage(width_img, height_img, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufferedImage.createGraphics(); g.drawImage(image, 0, 0, width_img, height_img, null); String[] water = StringUtils.split(waters, "\\|"); if(water!=null && water.length>0){ for(int i=0;i<water.length;i++){ String[] xy = StringUtils.split(water[i],","); if(xy!=null && xy.length==4){ int x = Integer.parseInt(xy[0]); int y = Integer.parseInt(xy[1]); int w = Integer.parseInt(xy[2]); int h = Integer.parseInt(xy[3]); Rectangle2D.Float r1= new Rectangle2D.Float(x,y,w,h);//定义直角矩形 g.setColor(new Color(0x999999)); // 涂抹颜色 g.fill(r1); //以填充方式绘制直角矩形 } } g.dispose(); } picUrl = objName+waterString; bos = new ByteArrayOutputStream(); ImageIO.write(bufferedImage, PICTRUE_FORMATE_JPG, bos); bis = new ByteArrayInputStream(bos.toByteArray()); s3ServiceUtil.saveObject(picUrl, bis); } } } catch (Exception e) { picUrl = "error"; log.error("/upload upResult = "+false+"/xxx",e); } finally { try { if (iStream != null) { iStream.close(); } } catch (Exception e) { e.printStackTrace(); } if (null != bos) { bos.close(); } if (null != bis) { bis.close(); } } return picUrl; }
相关推荐
Java图片浏览管理系统是一款基于Java开发的简易应用,旨在帮助用户方便地查看和管理他们的图片集合。这个系统可能包含了文件浏览器组件、图片预览功能、以及一些基本的图片操作选项,如旋转、缩放等。下面将详细介绍...
Java图片编辑工具是一款基于Java开发的图像处理软件,它的设计目标是方便地集成到其他Java项目中,提供灵活的图片编辑功能。这个工具利用了Java的强大功能和跨平台特性,使得开发者可以在各种操作系统上实现图像的...
本篇文章将详细探讨如何使用Java实现图片到视频的转换。 首先,我们需要理解Java中的关键库,如Java Advanced Imaging (JAI) 和 Java Media Framework (JMF)。JAI主要用于图像处理和分析,而JMF则用于媒体播放和...
在Java Web开发中,实现图片上传功能是一项常见的需求。这里我们主要探讨如何使用Java JSP技术来实现这一功能,以及如何处理上传后的图片,包括图片的剪裁和显示。首先,我们需要了解JSP(JavaServer Pages)是Java ...
在Java编程语言中,将多张图片合成一张图片是一项常见的图像处理任务,广泛应用于各种应用场景,如社交媒体拼图、报告生成、数据可视化等。要实现这个功能,我们需要使用到Java的图像处理库,如Java AWT(Abstract ...
本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...
这个文件可能是实现以上功能的Java源代码文件,包含了读取、处理和写回图片的逻辑。通过阅读和分析这个文件,你可以更好地理解字节流与图片转化的实际操作。 综上所述,Java的字节流机制提供了一种灵活且强大的...
在Java Web开发中,图片上传是一项常见的功能,用于允许用户上传他们的图片文件到服务器,然后在网站上展示。本教程将深入讲解如何使用Struts2框架和Apache Commons FileUpload库来实现这一功能。 首先,我们需要...
新增的ImageUtil提供了exportToImage方法,传入option对象(必填)、图片存储路径(选填)、图片名称(选填)、宽高(选填),生成图片后调用浏览器预览功能,等待文件保存完成,如果保存失败,自动重试3次,最后...
开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我
java解析图片验证码
根据给定文件的信息,本文将围绕Java操作图片的方法展开,主要涵盖往图片上添加文字以及合并多张图片的功能。这些技术在制作许可证书、安全证书等应用场景中非常实用。 ### Java操作图片概述 #### 一、加载图片 在...
java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java图片浏览器java...
但是有一个缺点,可能也是java的缺点吧,呵呵。 <br>在jdk1.6以下的版本环境下,压缩部分图片会很慢,经过我测试,如果图片的DPI越高,速度越慢,一般WEB使用图片DPI都是72,速度很快。大家可以试下。我测试了几...
java上传图片功能,图片太大,等比例压缩算法(原尺寸压缩)
- **缩略图生成**:在`Thumbnail_Maker.java`实例类中,可能包含用于创建高质量缩略图的代码,这在需要快速预览大量图片或者节省存储空间时非常有用。 2. **API文档**: `api.zip`包含了ImageJ的API文档,对于...
本篇文章将深入探讨如何在Java中实现这些功能,特别是针对PNG格式的图片,因为PNG格式支持透明度,但在处理过程中可能会出现背景变黑的问题。 首先,我们需要引入Java的`java.awt`和`javax.imageio`包,它们提供了...
通过以上步骤,我们可以成功地在Java SpringBoot应用中集成PaddleOCR,实现高效、便捷的OCR图片识别服务。这种集成方式不仅充分利用了PaddleOCR的强大功能,也发挥了Java在后端服务上的稳定性和易用性,为开发者提供...
java图片处理工具类JAR包 java-image-scalingjar
这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,特别是对于大量外部资源的情况。下面我们将详细探讨这个过程涉及的关键知识点。 1. **Java和JSP基础**: Java是一种广泛使用...