今天遇到一个问题,用户上传图片的时候,有些敏感信息 需要在图片上进行编辑一下(将敏感信息进行涂抹)
上传图片 在图片上记录用户涂抹的 坐标 (相对应左上角) 绘制 矩形框框
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实现图片的打印功能,本代码打印的是75*75的二维码,纸张大小定义为120*83,A4纸等请自行定义
Java图片浏览管理系统是一款基于Java开发的简易应用,旨在帮助用户方便地查看和管理他们的图片集合。这个系统可能包含了文件浏览器组件、图片预览功能、以及一些基本的图片操作选项,如旋转、缩放等。下面将详细介绍...
在Java Web开发中,图片上传预览功能是一个常见的需求,尤其在用户交互性强的网站或应用中。这个功能允许用户在上传图片之前查看其效果,确保上传的图片符合预期。以下将详细介绍如何在Java环境中,结合ASP和JSP技术...
除了Java 2D API,还有一些第三方库,如Apache Commons Imaging(以前的Sanselan)和ImageMagick,它们提供了更丰富的图片处理功能,包括高级压缩算法和更多格式支持。 总结来说,Java中的图片压缩涉及到读取图片、...
在Java编程语言中,将多张图片合成一张图片是一项常见的图像处理任务,广泛应用于各种应用场景,如社交媒体拼图、报告生成、数据可视化等。要实现这个功能,我们需要使用到Java的图像处理库,如Java AWT(Abstract ...
本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...
选择图片,拼接图片,Java拼接多张图片,连接在一起 代码程序。
这个文件可能是实现以上功能的Java源代码文件,包含了读取、处理和写回图片的逻辑。通过阅读和分析这个文件,你可以更好地理解字节流与图片转化的实际操作。 综上所述,Java的字节流机制提供了一种灵活且强大的...
在Java编程语言中,处理图像是一项常见的任务,包括图片的旋转、翻转和镜像操作。这些功能在很多场景下都很实用,例如照片编辑、图像处理应用或是网页开发。本篇将详细介绍如何使用Java实现这些功能,并以`ImgRotate...
"Java中Excel转图片工具包(纯java)"就是这样一个解决方案,它实现了将Excel文件通过PDF中间格式转化为图片的功能。 首先,让我们了解一下这个工具包的工作原理。Excel文件本身并不直接支持转换为图片格式,但可以...
java读取本地图片文件获取流!java读取本地图片文件获取流!
在Java Web开发中,图片上传是一项常见的功能,用于允许用户上传他们的图片文件到服务器,然后在网站上展示。本教程将深入讲解如何使用Struts2框架和Apache Commons FileUpload库来实现这一功能。 首先,我们需要...
java 图片添加文字,java 图片添加文字
根据给定文件的信息,本文将围绕Java操作图片的方法展开,主要涵盖往图片上添加文字以及合并多张图片的功能。这些技术在制作许可证书、安全证书等应用场景中非常实用。 ### Java操作图片概述 #### 一、加载图片 在...
本篇文章将深入探讨如何在Java中实现这些功能,特别是针对PNG格式的图片,因为PNG格式支持透明度,但在处理过程中可能会出现背景变黑的问题。 首先,我们需要引入Java的`java.awt`和`javax.imageio`包,它们提供了...
java上传图片功能,图片太大,等比例压缩算法(原尺寸压缩)
通过以上步骤,我们可以成功地在Java SpringBoot应用中集成PaddleOCR,实现高效、便捷的OCR图片识别服务。这种集成方式不仅充分利用了PaddleOCR的强大功能,也发挥了Java在后端服务上的稳定性和易用性,为开发者提供...
java图片处理工具类JAR包 java-image-scalingjar
新增的ImageUtil提供了exportToImage方法,传入option对象(必填)、图片存储路径(选填)、图片名称(选填)、宽高(选填),生成图片后调用浏览器预览功能,等待文件保存完成,如果保存失败,自动重试3次,最后...
java图片查看,主要功能是选择文件,保存文件,对图片的放大,缩小,旋转操作。