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

    java实现图片上传预览

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

    java图片编辑工具

    Java图片编辑工具是一款基于Java开发的图像处理软件,它的设计目标是方便地集成到其他Java项目中,提供灵活的图片编辑功能。这个工具利用了Java的强大功能和跨平台特性,使得开发者可以在各种操作系统上实现图像的...

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

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

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

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

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

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

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

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

    java实现图片上传并显示

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

    java图片加水印(适应铺满)

    开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我

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

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

    java 图片添加文字

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

    [原创] 高清晰高品质Java图片压缩

    但是有一个缺点,可能也是java的缺点吧,呵呵。 &lt;br&gt;在jdk1.6以下的版本环境下,压缩部分图片会很慢,经过我测试,如果图片的DPI越高,速度越慢,一般WEB使用图片DPI都是72,速度很快。大家可以试下。我测试了几...

    java实现图片压缩功能源码

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

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

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

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

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

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

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

    java,jsp读取远程图片到本地服务器

    这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,特别是对于大量外部资源的情况。下面我们将详细探讨这个过程涉及的关键知识点。 1. **Java和JSP基础**: Java是一种广泛使用...

    java实现图片中心放大、缩小、移动、鼠标拖移

    在Java编程语言中,处理图像是...通过以上步骤,我们可以在Java中实现一个功能齐全的图像处理组件,能够支持图片的中心放大、缩小、移动以及鼠标拖移。这在开发涉及图像交互的应用,如地图应用或图像编辑器时非常有用。

    Java图片加水印,支持旋转和透明度设置

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    Java程序添加漂亮背景图片的方法

    Java GUI 背景图片添加方法 在 Java 中添加背景图片到 GUI 界面是一项常见的需求。通过使用 Java 的图形用户界面(GUI)组件,例如 JFrame、JPanel、JLabel 等,可以轻松地将背景图片添加到 GUI 界面中。本文将详细...

Global site tag (gtag.js) - Google Analytics