今天遇到一个问题,用户上传图片的时候,有些敏感信息 需要在图片上进行编辑一下(将敏感信息进行涂抹)
上传图片 在图片上记录用户涂抹的 坐标 (相对应左上角) 绘制 矩形框框
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; }
相关推荐
这个功能通常被用于照片编辑或美颜类应用中,让用户能够自由地在图片上添加马赛克效果或者进行涂鸦,以达到个性化修饰或隐私保护的目的。"MosaicImageView"就是这样一个组件,它仿造了美图秀秀和美颜相机的类似功能...
例如,在Java Swing中,可以使用`Graphics2D`对象进行绘图,包括线条绘制、填充形状、设置颜色等;在Python的Tkinter中,可能需要使用Canvas组件及其方法如`create_line()`和`create_oval()`等。 5. **状态管理**:...
这款应用集成了多种功能,如图片分析、数据库查询、测验评估、日历提醒以及护发类型的文本扫描,为用户提供了一个综合的护发解决方案。 首先,我们来详细了解一下Kotlin编程语言。Kotlin是由JetBrains公司推出的...
【描述】描述中的关键点表明,该项目的核心功能是图像填充,允许用户通过触控操作,用不同颜色来涂抹图片的各个部分。这涉及到Android应用开发中的几个重要技术点: 1. **图形用户界面(GUI)设计**:项目需要设计...
本文将深入探讨如何使用Java编程语言来开发一款针对儿童的教育应用,以帮助他们通过色彩丰富的图片和悦耳的声音学习字母、数字和颜色。 首先,我们要明白,儿童应用的设计核心在于寓教于乐,因此,界面设计必须简洁...
- **保存/分享类(SaveShare)**:处理作品的保存和分享功能,可能涉及图片格式转换和社交媒体接口。 - **设置类(Settings)**:提供用户自定义选项,如画笔粗细、沙粒密度等。 综上所述,Android手机游戏软件沙画...
在IT行业中,游戏开发是一个非常活跃的领域,而LibGDX是Java平台上广泛使用的开源游戏开发框架。这个框架提供了一整套工具和技术,使得开发者能够创建高性能、跨平台的游戏。在给定的“libgdx pixmap 涂口红(2)”...