`
flashdream8
  • 浏览: 685031 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 图片涂抹功能

 
阅读更多

 

今天遇到一个问题,用户上传图片的时候,有些敏感信息 需要在图片上进行编辑一下(将敏感信息进行涂抹)

 

上传图片 在图片上记录用户涂抹的 坐标 (相对应左上角) 绘制 矩形框框

 

  
        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;
    }
    

 

  • 大小: 43.4 KB
分享到:
评论

相关推荐

    MosaicImageView涂鸦马赛克

    这个功能通常被用于照片编辑或美颜类应用中,让用户能够自由地在图片上添加马赛克效果或者进行涂鸦,以达到个性化修饰或隐私保护的目的。"MosaicImageView"就是这样一个组件,它仿造了美图秀秀和美颜相机的类似功能...

    在视图中使用鼠标进行绘图操作(涂鸦)

    例如,在Java Swing中,可以使用`Graphics2D`对象进行绘图,包括线条绘制、填充形状、设置颜色等;在Python的Tkinter中,可能需要使用Canvas组件及其方法如`create_line()`和`create_oval()`等。 5. **状态管理**:...

    HairApp:Kotlin。 照顾好头发。 应用程序包括来自图片,数据库,测验,日历,护发类型的文本扫描仪

    这款应用集成了多种功能,如图片分析、数据库查询、测验评估、日历提醒以及护发类型的文本扫描,为用户提供了一个综合的护发解决方案。 首先,我们来详细了解一下Kotlin编程语言。Kotlin是由JetBrains公司推出的...

    FingerColoring-Android,.zip

    【描述】描述中的关键点表明,该项目的核心功能是图像填充,允许用户通过触控操作,用不同颜色来涂抹图片的各个部分。这涉及到Android应用开发中的几个重要技术点: 1. **图形用户界面(GUI)设计**:项目需要设计...

    Android-Kids-App

    本文将深入探讨如何使用Java编程语言来开发一款针对儿童的教育应用,以帮助他们通过色彩丰富的图片和悦耳的声音学习字母、数字和颜色。 首先,我们要明白,儿童应用的设计核心在于寓教于乐,因此,界面设计必须简洁...

    Andriod手机游戏软件沙画涂鸦

    - **保存/分享类(SaveShare)**:处理作品的保存和分享功能,可能涉及图片格式转换和社交媒体接口。 - **设置类(Settings)**:提供用户自定义选项,如画笔粗细、沙粒密度等。 综上所述,Android手机游戏软件沙画...

    libgdx pixmap 涂口红(2)

    在IT行业中,游戏开发是一个非常活跃的领域,而LibGDX是Java平台上广泛使用的开源游戏开发框架。这个框架提供了一整套工具和技术,使得开发者能够创建高性能、跨平台的游戏。在给定的“libgdx pixmap 涂口红(2)”...

Global site tag (gtag.js) - Google Analytics