`
flashdream8
  • 浏览: 678532 次
  • 性别: 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
分享到:
评论

相关推荐

    java实现图片打印功能

    java实现图片的打印功能,本代码打印的是75*75的二维码,纸张大小定义为120*83,A4纸等请自行定义

    java图片浏览管理系统

    Java图片浏览管理系统是一款基于Java开发的简易应用,旨在帮助用户方便地查看和管理他们的图片集合。这个系统可能包含了文件浏览器组件、图片预览功能、以及一些基本的图片操作选项,如旋转、缩放等。下面将详细介绍...

    java实现图片上传预览

    在Java Web开发中,图片上传预览功能是一个常见的需求,尤其在用户交互性强的网站或应用中。这个功能允许用户在上传图片之前查看其效果,确保上传的图片符合预期。以下将详细介绍如何在Java环境中,结合ASP和JSP技术...

    java图片压缩处理(可以压缩为任意大小

    除了Java 2D API,还有一些第三方库,如Apache Commons Imaging(以前的Sanselan)和ImageMagick,它们提供了更丰富的图片处理功能,包括高级压缩算法和更多格式支持。 总结来说,Java中的图片压缩涉及到读取图片、...

    利用Java程序把多张图片合成一张图片

    在Java编程语言中,将多张图片合成一张图片是一项常见的图像处理任务,广泛应用于各种应用场景,如社交媒体拼图、报告生成、数据可视化等。要实现这个功能,我们需要使用到Java的图像处理库,如Java AWT(Abstract ...

    用Java实现的图片加密程序

    本项目"用Java实现的图片加密程序"正是关注这一主题,它利用Java的IO流处理技术,实现了对图片文件的加密和解密功能。以下是关于这个项目的一些详细知识点: 1. **Java IO流**:Java的IO流是处理输入输出的基础,它...

    java代码实现拼接图片

    选择图片,拼接图片,Java拼接多张图片,连接在一起 代码程序。

    Java实现字节流与图片的转化

    这个文件可能是实现以上功能的Java源代码文件,包含了读取、处理和写回图片的逻辑。通过阅读和分析这个文件,你可以更好地理解字节流与图片转化的实际操作。 综上所述,Java的字节流机制提供了一种灵活且强大的...

    java 图片旋转、翻转、镜像处理

    在Java编程语言中,处理图像是一项常见的任务,包括图片的旋转、翻转和镜像操作。这些功能在很多场景下都很实用,例如照片编辑、图像处理应用或是网页开发。本篇将详细介绍如何使用Java实现这些功能,并以`ImgRotate...

    Java中Excel转图片工具包(纯java)

    "Java中Excel转图片工具包(纯java)"就是这样一个解决方案,它实现了将Excel文件通过PDF中间格式转化为图片的功能。 首先,让我们了解一下这个工具包的工作原理。Excel文件本身并不直接支持转换为图片格式,但可以...

    java读取图片文件流

    java读取本地图片文件获取流!java读取本地图片文件获取流!

    java实现图片上传并显示

    在Java Web开发中,图片上传是一项常见的功能,用于允许用户上传他们的图片文件到服务器,然后在网站上展示。本教程将深入讲解如何使用Struts2框架和Apache Commons FileUpload库来实现这一功能。 首先,我们需要...

    java 图片添加文字

    java 图片添加文字,java 图片添加文字

    java 操作图片,往图片写字,将多图片合并

    根据给定文件的信息,本文将围绕Java操作图片的方法展开,主要涵盖往图片上添加文字以及合并多张图片的功能。这些技术在制作许可证书、安全证书等应用场景中非常实用。 ### Java操作图片概述 #### 一、加载图片 在...

    java对图片改变大小,png防止变黑,加圆角 圆角外透明

    本篇文章将深入探讨如何在Java中实现这些功能,特别是针对PNG格式的图片,因为PNG格式支持透明度,但在处理过程中可能会出现背景变黑的问题。 首先,我们需要引入Java的`java.awt`和`javax.imageio`包,它们提供了...

    java实现图片压缩功能源码

    java上传图片功能,图片太大,等比例压缩算法(原尺寸压缩)

    Java实现ocr图片识别(PaddleOCR)飞桨

    通过以上步骤,我们可以成功地在Java SpringBoot应用中集成PaddleOCR,实现高效、便捷的OCR图片识别服务。这种集成方式不仅充分利用了PaddleOCR的强大功能,也发挥了Java在后端服务上的稳定性和易用性,为开发者提供...

    java图片处理工具类JAR包 java-image-scalingjar

    java图片处理工具类JAR包 java-image-scalingjar

    Echarts-Java 3.0.0.6.jar(附后台生成图片功能)

    新增的ImageUtil提供了exportToImage方法,传入option对象(必填)、图片存储路径(选填)、图片名称(选填)、宽高(选填),生成图片后调用浏览器预览功能,等待文件保存完成,如果保存失败,自动重试3次,最后...

    java图片查看器,选择打开,保存,放大,缩小,旋转,切换上一张和下一张

    java图片查看,主要功能是选择文件,保存文件,对图片的放大,缩小,旋转操作。

Global site tag (gtag.js) - Google Analytics