简介 目录 评价 推荐
  • 指尖农民 2019-10-16

    项目结构。。。。。

    截图
    0赞 · 0采集
  • Jolie_Laide 2018-10-09

    书写代码思路

    https://img3.mukewang.com/5bbbdcc000019d1313860776.jpg

    0赞 · 0采集
  • Jolie_Laide 2018-10-05

    课程目标:

    1. 了解Java图片水印实现思路

    2. 掌握文字水印和图片水印的实现

    3. 掌握多图片批量水印的实现


    截图
    0赞 · 1采集
  • 慕的地7838724 2018-05-31

    while循环判断条件中的width和height应该是图片的宽和高,老师误写了

    具体代码如下:

    public String waterMark(File image, String imageFileName,
                String uploadPath, String realUploadPath) {
            String logoFileName = "logo_" + imageFileName;
            OutputStream os = null;
            try {
                
                Image img = ImageIO.read(image);
                int imgWidth = img.getWidth(null);
                int imgHeight = img.getHeight(null);
                
                BufferedImage bufferedImage = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = bufferedImage.createGraphics();
                g.drawImage(img, 0, 0, imgWidth, imgHeight, null);
                
                g.setFont(new Font(FONT_NAME,FONT_STYLE,FONT_SIZE));
                g.setColor(FONT_COLOR);
                int width = FONT_SIZE*getTextLength(MARK_TEXT);
                int height = FONT_SIZE;
                
                //设置透明度
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,ALPH));
                
                g.rotate(Math.toRadians(-30),bufferedImage.getWidth()/2,bufferedImage.getHeight()/2);
                
                int x = -width/2;
                int y = -height/2;
                
                while(x<imgWidth*1.5){
                    y = -height/2;
                    while(y<imgHeight*1.5){
                        g.drawString(MARK_TEXT, x, y);
                        y += height + 70;
                    }
                    x += width+70;
                }
                g.dispose();
                os = new FileOutputStream(realUploadPath+"/"+logoFileName);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
                encoder.encode(bufferedImage);
                
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                try {
                    if(os!=null)
                        os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
            }
            return uploadPath+"/"+logoFileName;
        }
        
        public int getTextLength(String text){
            int length = text.length();
            for (int i = 0; i < text.length(); i++) {
                String s = String.valueOf(text.charAt(i));
                if(s.getBytes().length>1){
                    length++;
                }
            }
            length = length%2==0?length/2:length/2+1;
            return length;
        }

    截图
    0赞 · 0采集
  • 慕的地7838724 2018-05-30

    使用文字水印实现类

    在waterMarkAction中添加如下代码

    (注意:这里的类名和视频的不相同,但类的实现代码一样)

            IMarkService markService = new TextMarkServiceImpl();
            imageInfo.setLogoImageURL(markService.waterMark(image, imageFileName, uploadPath, realPath));

    截图
    0赞 · 0采集
  • 慕的地7838724 2018-05-30

    @Override
        public String waterMark(File image, String imageFileName, String uploadPath,
                String realUploadPath) {
            
            String logoFileName = "logo_" + imageFileName;
            OutputStream os = null;
            try {
                
                Image img = ImageIO.read(image);
                int imgWidth = img.getWidth(null);
                int imgHeight = img.getHeight(null);
                
                BufferedImage bufferedImage = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = bufferedImage.createGraphics();
                g.drawImage(img, 0, 0, imgWidth, imgHeight, null);
                
                g.setFont(new Font(FONT_NAME,FONT_STYLE,FONT_SIZE));
                g.setColor(FONT_COLOR);
                //设置透明度
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP));
                
                int width = FONT_SIZE*getTextLength(MARK_TEXT);
                int height = FONT_SIZE;
                int widthDiff = imgWidth-width;
                int heightDiff = imgHeight-height;
                int x = X;
                int y = Y;
                x = x>widthDiff ? widthDiff : x;
                y = y>heightDiff ? heightDiff : y;
                
                g.drawString(MARK_TEXT, x, y+FONT_SIZE);
                g.dispose();
                os = new FileOutputStream(realUploadPath+"/"+logoFileName);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
                encoder.encode(bufferedImage);
                
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                try {
                    if(os!=null)
                        os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
            }
            return uploadPath+"/"+logoFileName;
        }
        
        public int getTextLength(String text){
            int length = text.length();
            for (int i = 0; i < text.length(); i++) {
                String s = String.valueOf(text.charAt(i));
                if(s.getBytes().length>1){
                    length++;
                }
            }
            length = length%2==0?length/2:length/2+1;
            return length;
        }

    截图
    0赞 · 0采集
  • 深山老龟 2018-05-06

    提交页面

    截图
    0赞 · 0采集
  • 深山老龟 2018-05-06

    strtus.xml添加action配置

    截图
    0赞 · 0采集
  • 深山老龟 2018-05-06

    struts.xml

    截图
    0赞 · 0采集
  • 深山老龟 2018-05-06

    xml

    截图
    0赞 · 0采集
  • 深山老龟 2018-05-06

    jar

    截图
    0赞 · 0采集
  • 深山老龟 2018-05-06

    1

    截图
    0赞 · 0采集
  • root750 2018-01-14
    Java图片水印实用工具类
    截图
    0赞 · 0采集
  • junmoxiao_12 2017-09-12
    .....
    截图
    0赞 · 0采集
  • junmoxiao_12 2017-09-12
    设置bufferedImage对象
    截图
    0赞 · 0采集
  • junmoxiao_12 2017-09-11
    BufferedImage 把对象储存到缓存中,提高运行效率。 Graohics2D 对对象进行操作 JPEGImageEncode 对对象进行编码,把内存中的对象刻录到我们的磁盘上
    截图
    1赞 · 0采集
  • Jane_1986 2017-06-23
    图片水印使用工具类
    截图
    0赞 · 0采集
  • 慕用022239 2017-06-02
    **
    截图
    0赞 · 0采集
  • Bond625 2017-02-20
    BufferedImage图片水印实用工具类
    0赞 · 0采集
  • 花尾巴狼 2017-02-13
    添加框架配置 删除没必要的 整合包
    截图
    0赞 · 0采集
  • 花尾巴狼 2017-02-13
    添加框架过滤配置
    0赞 · 0采集
  • 滕玉龙 2016-12-26
    1:41
    0赞 · 0采集
  • 滕玉龙 2016-12-26
    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>watermark</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
    0赞 · 0采集
  • 小杜嘟嘟 2016-12-18
    dddd
    截图
    0赞 · 0采集
  • mumukk 2016-10-26
    水印实现思路
    截图
    0赞 · 0采集
  • sunnylinner 2016-09-26
    MarkService markService = new MarkServiceImpl(); // picInfo.setImageURL( // uploadService.uploadImage(image, imageFileName, uploadPath, realUploadPath)); uploadService.uploadImage(image, imageFileName, uploadPath, realUploadPath); picInfo.setImageURL( markService.watermark(image, imageFileName, uploadPath, realUploadPath));
    0赞 · 0采集
  • LiaoPan 2016-09-14
    技术架构
    截图
    0赞 · 1采集
  • dota1022 2016-09-10
    图片水印实现思路 1.创建缓存图片对象(存在内存中,效率高)
    0赞 · 1采集
  • 李木人 2016-08-19
    用到的jar包: commons-fileupload-1.2.1.jar commons-io.1.3.2.jar commons-lang-2.4.jar commons-longging-1.1.1.jar freemarker-2.3.8.jar ognl-2.6.11.jar struts2-core-2.0.11.2.jar xwork-2.0.5.jar
    0赞 · 2采集
  • 希文特_ 2016-08-16
    水印制作思路
    截图
    0赞 · 0采集
数据加载中...
开始学习 免费