精华内容
下载资源
问答
  • java 添加文字水印

    2017-09-12 08:56:51
    package ...import java.awt.Color;import java.io.File;import com.lowagie.text.Font;public interface MarkService {public String MARK_TEXT="我的公司";public String FONT_NAME
    package com.lzzj.prodma.controllers.archives;
    
    import java.awt.Color;
    import java.io.File;
    
    import com.lowagie.text.Font;
    
    public interface MarkService {
    	public  String MARK_TEXT="我的公司";
    	public  String FONT_NAME="微软雅黑";
    	public  int FONT_STYLE=Font.BOLD;
    	public  int FONT_SIZE=40;
    	public  Color FONT_COLOR=Color.GRAY;
    	//static final
    	public static final int X=10;
    	public static final int Y=10;
    	
    	public static float ALPHA=0.3F;
    	
    	public String watermark(File image,String imageFileName,String uploadPath,String realUploadPath);
    	
    }
    

    package com.lzzj.prodma.controllers.archives;
    
    import java.awt.AlphaComposite;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    import javax.imageio.ImageIO;
    
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    public class TextMarkService implements MarkService {
    	@Override
    	public String watermark(File image,String imageFileName,String uploadPath,String realUploadPath){
    		String logoFileName="logo_"+imageFileName;
    		OutputStream os=null;
    		try {
    			Image image2=ImageIO.read(image);
    			int width=image2.getWidth(null);
    			int height=image2.getHeight(null);
    			
    			BufferedImage bufferedImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    			
    			Graphics2D g=bufferedImage.createGraphics();
    			
    			g.drawImage(image2, 0, 0, width, height, null);
    			
    			g.setFont(new Font(FONT_NAME,FONT_STYLE,FONT_SIZE));
    			g.setColor(FONT_COLOR);
    			
    			int width1=FONT_SIZE*getTextLength(MARK_TEXT);
    			int height1=FONT_SIZE;
    			
    			int widthDiff=width-width1;
    			int heightDiff=height-height1;
    			
    			
    			int x=width-10-width1;
    			int y=height-10-height1;
    		/*	if(x>widthDiff){
    				x=widthDiff;
    			}
    			if(y>heightDiff){
    				y=heightDiff;
    			}*/
    			
    			g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, ALPHA));
    			
    			g.drawString(MARK_TEXT, x, y+FONT_SIZE);
    			g.dispose();
    			
    			os=new FileOutputStream(realUploadPath+"/"+logoFileName);
    			JPEGImageEncoder en= JPEGCodec.createJPEGEncoder(os);
    			en.encode(bufferedImage);
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			if(os!=null){
    				try {
    					os.close();
    				} catch (Exception e2) {
    					e2.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;
    		
    	}
    	public static void main(String[] args){
    		TextMarkService tms=new TextMarkService();
    		File image=new File("C:/logs/132999/3.JPG");
    		String aa=tms.watermark(image,"3.JPG","C:/logs/132999","C:/logs/132999");
    	}
    }

    展开全文
  • Java图片添加水印

    2018-06-27 22:02:32
    更新点考拉博客 文章发布增加首页背景...Java增加水印代码 /** * Created by march on 2018/6/27. * 图片工具类 */ import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; impo...

    更新点

    考拉博客

    • 文章发布增加首页背景图片
    • 图片增加文本水印,根据图片大小自动设置水印字体大小

    Java增加水印代码

    /**
     * Created by march on 2018/6/27.
     * 图片工具类
     */
    
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import javax.imageio.ImageIO;
    import java.awt.Color;
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    public class ImageUtils {
        public static int MIN_FONT_SIZE = 15; //最小字体大小
        public static int REDUCE_SCALE = 20;  //文字虽小比例,根据图片大小进行动态设置字体大小
        public static String MARK_TEXT = "http://kooola.com";
        public static String FONT_NAME = "华为楷体";
        public static int FONT_STYLE = 5;
        private static Color TEXT_COLOR = Color.GRAY;
    
    
        /**
         *
    //   * @param text  文本
         * @param img 目标图标path
    //   * @param fontName 字体名称
    //   * @param fontStyle 字体样式
         */
        public static void makeWatermark(String img){
            int fontSize = 40;
    
    
            File file = new File(img);
            Image src = null;
            try{
                src = ImageIO.read(file);
            }catch (Exception e){
                e.printStackTrace();
            }
            int width = src.getWidth(null);
            int height = src.getHeight(null);
    
            int size = width > height ? height : width;
            //根据图片大小动态设置字体大小
            fontSize = size / REDUCE_SCALE < MIN_FONT_SIZE ? MIN_FONT_SIZE : size / REDUCE_SCALE;
    
    
            // x,y 为文字开始的相对位置
    //        int x = width - fontSize * text.length();
            int x = 0;  //x 设置到左下角开头
            int y = height - fontSize;
    
    
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics graphics = image.createGraphics();
            graphics.drawImage(src, 0, 0, width, height, null);
            graphics.setFont(new Font(FONT_NAME, FONT_STYLE, fontSize));
            graphics.setColor(TEXT_COLOR);
            graphics.drawString(MARK_TEXT, x, y);
    
            graphics.dispose();
            FileOutputStream fileOutputStream = null;
            try{
                fileOutputStream = new FileOutputStream(img);
            }catch (Exception e){
                e.printStackTrace();
            }
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);
            try{
                encoder.encode(image);
            }catch (Exception e){
                e.printStackTrace();
            }
            try {
                fileOutputStream.close();
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        public static void main(String[] args){
            makeWatermark("/Users/march/Downloads/t9gg6570quh5koe6fqkdil2sqm.jpg");
        }
    }
    

    效果

    Java图片水印

    展开全文
  • java添加水印

    2017-12-20 17:30:24
    生成水印图片 --

    生成水印图片

    1. 获取背景透明的水印图片
    BufferedImage image = new BufferedImage(width, height,     BufferedImage.TYPE_INT_RGB);
    // 获取Graphics2D
    Graphics2D g2d = image.createGraphics();
    
    // ----------  增加下面的代码使得背景透明  -----------------
    image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
    g2d.dispose();
    g2d = image.createGraphics();
    // ----------  背景透明代码结束  -----------------
    //生成透明背景失败,!!! jpg模型没有透明通道 请使用png
    
    
    1. 直接在图片上添加图片水印
       public void mark(BufferedImage bufImg, Image img, Image markImg, int width, int height, int x, int y) {  
            Graphics2D g = bufImg.createGraphics();  
            g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null);  
             /* 
    该方法出现问题 这里的image是pdf处理的图片对象,java没有看到直接处理的方法。
      com.itextpdf.text.Image image = Image.getInstance(filename); 
    image.setAbsolutePosition(50, 400);//坐标  
                image.setRotation(-20);//旋转 弧度  
                image.setRotationDegrees(-45);//旋转 角度  
                image.scaleAbsolute(200,100);//自定义大小  
                image.scalePercent(50);//依照比例缩放  
    */
            g.drawImage(markImg, x, y, width, height, null);  
            g.dispose();  
        }  
    1. 直接在文字上添加水印
        public void mark(BufferedImage bufImg, Image img, String text, Font font, Color color, int x, int y) {  
            Graphics2D g = bufImg.createGraphics();  
            g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null);  
            g.setColor(color);  
            g.setFont(font);  
            g.drawString(text, x, y);  
            g.dispose();  
        }  

    pdf打水印

    用上面生成的图像 直接打到对应的pdf文件中即可
    1.水印的方向 大小等通过对Image的调整即可实现
    2.水印的位置通过addImage复写方法中的6个参数即可决定

    package com.trs.wsg.pdf.itext;
    
    import java.io.FileOutputStream;
    
    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.Element;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.pdf.BaseFont;
    import com.itextpdf.text.pdf.PdfContentByte;
    import com.itextpdf.text.pdf.PdfGState;
    import com.itextpdf.text.pdf.PdfReader;
    import com.itextpdf.text.pdf.PdfStamper;
    
    public class PdfAddWaterMark {
    
        public PdfAddWaterMark() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * 
         * 【功能描述:添加图片和文字水印】 【功能详细描述:功能详细描述】
         * @param srcFile 待加水印文件
         * @param destFile 加水印后存放地址
         * @param text 加水印的文本内容
         * @param textWidth 文字横坐标
         * @param textHeight 文字纵坐标
         * @throws Exception
         */
        public void addWaterMark(String srcFile, String destFile, String text,
                int textWidth, int textHeight) throws Exception
        {
            // 待加水印的文件
            PdfReader reader = new PdfReader(srcFile);
            // 加完水印的文件
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
                    destFile));
            int total = reader.getNumberOfPages() + 1;
            PdfContentByte content;
            // 设置字体
           // BaseFont font = BaseFont.createFont();
            BaseFont basefont = BaseFont.createFont("c:/windows/fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //设置透明度
            PdfGState gs = new PdfGState(); 
            gs.setFillOpacity(1f); 
            gs.setStrokeOpacity(1f);
            // 循环对每页插入水印
            for (int i = 1; i < total; i++)
            {
                // 水印的起始
                content = stamper.getUnderContent(i);
                // 开始
                content.beginText();
                // 设置颜色 默认为蓝色
                content.setColorFill(BaseColor.GRAY);
                // content.setColorFill(Color.GRAY);
                // 设置字体及字号
                content.setFontAndSize(basefont, 38);
                // 设置起始位置
                // content.setTextMatrix(400, 880);
                content.setTextMatrix(textWidth, textHeight);
                // 开始写入水印
                content.showTextAligned(Element.ALIGN_LEFT, text, textWidth,
                        textHeight, 45);
                content.endText();
    
                //t添加图片水印
                Image img2 = Image.getInstance("D:\\s.png");  
                img2.setRotationDegrees(45);
               /* image.setAbsolutePosition(50, 400);//坐标  
                image.setRotation(-20);//旋转 弧度  
                image.setRotationDegrees(-45);//旋转 角度  
                image.scaleAbsolute(200,100);//自定义大小  
                image.scalePercent(50);//依照比例缩放  
    */            img2.setAbsolutePosition(0, 0);  
                content.addImage(img2);
            }
            stamper.close();
        }
    }
    

    视频打水印

    通过ffmepmg程序,调用系统方法实现。

    package com.trs.wsg.video.ffmpeg;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class FFMPEG {
        /**
         * 判断返回内容通过正则表达式判断
         * @param str
         * @return
         */
          public static String dealString( String str ){  
                      Matcher m=java.util.regex.Pattern.compile("^frame=.*" ).matcher(str);
                     String msg="";
                      while (m.find()){
                             msg = m.group();  
                      }
                      return msg;
          } 
          /**
           * 如果是数字就是成功的时间(秒数)
           * @param str
           * @return
           */
            public static boolean isNumeric(String str){ 
               Pattern pattern = Pattern.compile("[0-9]*"); 
               Matcher isNum = pattern.matcher(str);
               if( !isNum.matches() ){
                   return false; 
               } 
               return true; 
            }
            /**
             *  如果返回不是null的值就是成功(值为转换用时单位:秒)
             * @param instr
             * @return
             */
          public static String returnSecond(String instr){
              String returnValue=null;
              if (null!=instr) {
                  String[] a=instr.split("\\.");
                  String[] b=a[0].split(":");
                  int returnNumber=0;
                  if (null!=instr&&b[0].length()!=0) {
                      returnNumber=Integer.valueOf(b[0])*60*60 + Integer.valueOf(b[1])*60 + Integer.valueOf(b[2]);
                      returnValue=String.valueOf(returnNumber);
                }else{
                    returnValue=null;
                }
            }
              return returnValue;
              }
          /**
           * 获取视频格式(转码前的格式和转码后的格式都可以调用)
           * @param outputPath
           * @return
           */
          public static String returnVideoFormat(String outputPath){
              return outputPath.substring(outputPath.lastIndexOf(".")+1);
          }
          /**
           * @ HashMap<String,String> dto 参数传递对象<br>
           * dto中包含的参数<br>
           * (必填)1.ffmpeg_path:ffmpeg执行文件地址,如 d:\\ffmpeg\\ffmpeg.exe Linux下直接调用ffmpeg命令(当然你事先已经有这个程序了)<br>
           * (必填)2.input_path:原视频路径<br>
           * (必填)3.video_converted_path:转换后视频输出路径<br>
           * (可选)4.screen_size:视频尺寸 长度乘宽度 乘号用英文小写"x"如 512x480<br>
           * (可选)5.logo:水印地址(其实在ffmpeg中有一个专门的watermark参数,logo跟它有何不同,我还没看,不过对我来说效果一样 貌似需要png图片才行)<br>
           * (可选,如果填写必须有logo才行,默认为0)6.xaxis:水印logo的横坐标(只有logo参数为一个正确路径才行) 比如0<br>
           * (可选,如果填写必须有logo才行,默认为0)6.yaxis:水印logo的纵坐标(只有logo参数为一个正确路径才行) 比如0<br>
           * (可选)vb:视频比特率,传入一个数值,单位在程序里面拼接了k
           * (可选)ab:音频比特率,传入一个数值,单位在程序里面拼接了k
           */
           public String videoTransfer(HashMap<String, String> dto){  
    //         String ffmpeg_path,String input_path,String video_converted_path,String logo,String screen_size,String xaxis,String yaxis,String vb,String ab
               List<String> cmd = new ArrayList<String>();  
               cmd.add(dto.get("ffmpeg_path"));
               cmd.add("-y");  
               cmd.add("-i");  
               cmd.add(dto.get("input_path"));  
               if (null!=dto.get("screen_size")) {
                    cmd.add("-s");  
                    cmd.add(dto.get("screen_size"));    
               }
               if (null!=dto.get("logo")) {//logo和水印效果差不多,没有研究区别是啥
                   String logo=dto.get("logo");
                    cmd.add("-vf");
                    String xaxis=dto.get("xaxis");
                    String yaxis=dto.get("yaxis");
                    xaxis=xaxis!=null&&!xaxis.equals("")?xaxis:"0";
                    yaxis=yaxis!=null&&!yaxis.equals("")?yaxis:"0";
    //              /tmp/TVLOG.png   //linux下logo或者水印路径
    //              d:\\:/ffmpeg/Logo.png  //Windows的logo或者水印路径
                    String logoString="movie="+logo+"[logo],[in][logo]overlay=x="+xaxis+":y="+yaxis+"[out]";
                    cmd.add(logoString);
                }
               cmd.add("-strict");//这是啥我也忘了……
               cmd.add("-2");//这是啥我也忘了……
               if (null!=dto.get("vb")&&!dto.get("vb").equals("")) {
                   cmd.add("-vb");
                   cmd.add(dto.get("vb")+"k");
            }
               if(null!=dto.get("ab")&&!dto.get("ab").equals("")){
                   cmd.add("-ab");
                   cmd.add(dto.get("ab")+"k");
               }
                cmd.add("-q:v");
                cmd.add("4");//这个是视频质量4就比较高了貌似是最高的,6低,具体几到几我忘了……
                cmd.add(dto.get("video_converted_path"));  
                String converted_time= CmdExecuter.exec(cmd);  
                return returnSecond(converted_time);//获取转换时间
           }  
           public static void  main(String [] arg){
               HashMap<String, String>dto=new HashMap<String, String>();
               dto.put("ffmpeg_path", "C:\\Users\\Administrator\\Downloads\\java-ffmpeg\\ffmpeg\\ffmpeg.exe");//必填
               dto.put("input_path", "C:\\Users\\Administrator\\Downloads\\java-ffmpeg\\ffmpeg\\input\\test.mp4");//必填
               dto.put("video_converted_path", "C:\\Users\\Administrator\\Downloads\\java-ffmpeg\\ffmpeg\\output\\output.mp4");//必填
               dto.put("logo", "D\\\\:/s.png");//可选(注意windows下面的logo地址前面要写4个反斜杠,如果用浏览器里面调用servlet并传参只用两个,如 d:\\:/ffmpeg/input/logo.png)
               String secondsString=  new FFMPEG().videoTransfer(dto);
               System.out.println("转换共用:"+secondsString+"秒");
           }
    }
    
    package com.trs.wsg.video.ffmpeg;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.LinkedList;
    import java.util.List;
    public class CmdExecuter {
        public static String exec(List<String> cmd) {
            String converted_time = null;
            Process proc =null;
            BufferedReader stdout = null;
            try {
                ProcessBuilder builder = new ProcessBuilder();
                builder.command(cmd);
                builder.redirectErrorStream(true);
                proc = builder.start();
                stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                String line;
                int lineNumber=1;
                List<String> returnStringList = new LinkedList<String>();
                while ((line = stdout.readLine()) != null) {
                    System.out.println("第"+lineNumber+"行:"+line);
                    lineNumber=lineNumber+1;
                        returnStringList.add(FFMPEG.dealString(line));
                }
                String info = "";
                for (int i = returnStringList.size() - 1; i >= 0; i--) {
                    if (null != returnStringList.get(i) && returnStringList.get(i).startsWith("frame=")) {
                        info = returnStringList.get(i);
                        break;
                    }
                }
                if (null != info) {
                    converted_time = info.split("time=")[1].split("bitrate=")[0].trim();
                }
            } catch (IndexOutOfBoundsException ex) {
                converted_time = null;
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                try {
                    proc.waitFor();
                    stdout.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return converted_time;
        }
    }
    

    最后是引用的资源

        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>  
            <groupId>com.itextpdf.tool</groupId>  
            <artifactId>xmlworker</artifactId>  
            <version>5.5.10</version>  
        </dependency>
        <dependency>
              <groupId>com.itextpdf</groupId>
              <artifactId>itextpdf</artifactId>
              <version>5.5.10</version>
        </dependency> 
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>3.14-beta1</version>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>2.0.8</version>
        </dependency>
    展开全文
  • java调用ffmpeg 添加水印转换视频

    热门讨论 2014-12-31 11:58:13
    java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...
  • javaCV视频添加水印

    千次阅读 2019-09-16 02:57:07
    想要给视频添加水印,需要从视频中取出图像帧,给图像...首先需要取到BufferedImage,通过这个就可以用Java的方式添加水印 从grabber中获取BufferedImage: //获取BufferedImage可以给图像帧添加水印 Java2DFra...

    想要给视频添加水印,需要从视频中取出图像帧,给图像帧添加文字、图片水印即可

    首先需要取到BufferedImage,通过这个就可以用Java的方式添加水印

    从grabber中获取BufferedImage:

    //获取BufferedImage可以给图像帧添加水印
    		Java2DFrameConverter javaconverter=new Java2DFrameConverter();
    		BufferedImage buffImg=javaconverter.convert(grabber.grab());

    获取到了BufferedImage就可以开始给视频帧添加文字或者图片水印

    用java添加水印:

    (1)摄像头视频抓取

    (2)Frame和Mat相互转换

    (3)给图像添加文字

    (4)把添加水印文字的图像转换为Frame并显示到窗口

    (5)保存图片

    代码实现

    运行后会出现一个窗口,窗口中会实时显示日期和eguid正向和eguid翻转字符,关闭窗口相当于结束程序运行。

    该程序会自动保存第一帧图像到本地eguid.jpg文件。

    // 转换器,用于Frame/Mat/IplImage相互转换
    		OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
    
    		// 使用OpenCV抓取本机摄像头,摄像头设备号默认0
    		OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
    
    		// 开启抓取器
    		grabber.start();
    
    		//做好自己!--eguid版权所有,转载请注明出处!
    		CanvasFrame cFrame = new CanvasFrame("做好自己!--eguid!", CanvasFrame.getDefaultGamma() / grabber.getGamma());
    		cFrame.setAlwaysOnTop(true);
    		cFrame.setVisible(true);
    		// 水印文字位置
    		Point point1 = new Point(10, 50);
    		Point point2 = new Point(200, 200);
    		Point point3 = new Point(200, 240);
    		// 颜色
    		Scalar scalar1 = new Scalar(0, 255, 255, 0);
    		Scalar scalar2 = new Scalar(255, 0, 0, 0);
    		Frame frame = null;
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		int index = 0;
    		// 关闭窗口即停止运行
    		while (cFrame.isShowing()) {
    			if ((frame = grabber.grabFrame()) != null) {
    				// 取一帧视频(图像),并转换为Mat
    				Mat mat = converter.convertToMat(grabber.grabFrame());
    
    				// 加文字水印,opencv_imgproc.putText(图片,水印文字,文字位置,字体,字体大小,字体颜色,字体粗度,文字反锯齿,是否翻转文字)
    				opencv_imgproc.putText(mat, "eguid!", point2, opencv_imgproc.CV_FONT_VECTOR0, 2.2, scalar2, 1, 0,
    						false);
    				// 翻转字体,文字平滑处理(即反锯齿)
    				opencv_imgproc.putText(mat, "eguid!", point3, opencv_imgproc.CV_FONT_VECTOR0, 2.2, scalar2, 1, 20,
    						true);
    
    				opencv_imgproc.putText(mat, sdf.format(new Date()), point1, opencv_imgproc.CV_FONT_ITALIC, 0.8, scalar1,
    						2, 20, false);
    				// 在窗口显示处理后的图像,Frame frame=converter.convert(mat);
    				cFrame.showImage(converter.convert(mat));
    				if (index == 0) {
    					// 保存第一帧图片到本地
    					opencv_imgcodecs.imwrite("eguid.jpg", mat);
    				}
    				// 释放Mat资源
    				mat.release();
    				mat.close();
    
    			}
    			Thread.sleep(40);
    			index++;
    		}
    
    		cFrame.dispose();// 销毁窗口
    		grabber.stop();// 停止抓取器
    
    		// 手动释放资源
    		scalar1.close();
    		scalar2.close();
    		point1.close();
    		point2.close();
    		point3.close();

     

    转载于:https://my.oschina.net/yangty2017/blog/920391

    展开全文
  • 需求,给指定目录下面以.jpg结尾的文件,添加图标水印和文字水印 package com.gblfy.util; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; import javax.imageio...
  • java_图片添加水印

    2021-04-23 22:34:27
    java_图片添加水印 /** * 图片添加水印 * @param sourceImg 源文件 * @param targetImg 输入文件 * @param jwd * @param types * @return * @throws IOException */ public static String markImgMark...
  • JAVA 给图片添加水印

    千次阅读 2017-08-10 21:07:49
    前段时间写过一篇 JAVA 绘制验证码图像及解决黑色背景问题  ,在这篇的基础上,理解添加水印的功能更加容易。 先上代码示例: /***** * 给图片添加文字水印 * @author wjw * */ public class ImageUtils { ...
  • Android 录制视频添加时间水印

    万次阅读 热门讨论 2015-02-13 15:38:57
    1.添加时间水印 录制视频时,在视频右下角添加时间水印,达到监控录像的效果,如下图:     实现思路如下: 1.制作12张图片,分别是数字0-9,冒号和横折。首先用PS做成png24格式,最好是黑底白字(在代码...
  • 在前一篇中详细讲解了图片添加水印,详见图片添加水印 在本章中,将为视频添加水印或logo,在给视频添加水印前我们先下载工具,在本章中使用的是FFPeng,这是一款常用的视频处理工具,下载链接点击打开链接 下载后...
  • 添加文字水印的工具类,自己去下JAR包,MAVEN的网站http://mvnrepository.com/
  • JAVA实现GIF添加水印

    2019-04-03 18:30:51
    -- java gif 添加水印功能 library --> <groupId>com.madgag</groupId> <artifactId>animated-gif-lib <version>1.5-SNAPSHOT 引用库: https://github.com/rtyley/animated-gif-lib-for-java git ...
  • java POI为excel添加水印

    千次阅读 热门讨论 2020-05-06 14:38:19
    网络上充斥着各种为excel添加水印的方法,但是多数效果不敢恭维,这里介绍两种添加excel水印的方法,最终实现的效果跟excel工具添加水印无异,个人比较喜欢比较推荐。 这里说是两种,其实原理是一种,只不过因为...
  • 最近做的项目需要实现为图片添加多处文字水印,在网上查找和实践后,实现了功能,并且添加后的图片不模糊,特此记录一下,方便日后用到。 首先是controller层 public class ImageText { /** *srcImgPath:源图片...
  • public static void main(String[] args) { long startTime = System.currentTimeMillis(); //文字可以是一段也可以是多段 本例采用3段... System.out.println("花费时间:" + (endTime - startTime) + "毫秒"); }
  • javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作 javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制 ...
  • JAVACV实现视频帧添加中文水印

    千次阅读 2019-03-19 09:50:42
    @[TOC] JAVACV实现视频帧添加中文水印 JAVACV实现视频帧添加中文水印 最近有个项目需要用到监控视频和采集数据融合显示的问题。通过各种尝试,最终确定可以使用javacv+nginx-temp来实现(类似与直播平台模式)。其中...
  • Android 拍照添加时间水印

    千次阅读 2018-09-30 16:43:17
    //添加时间水印 Bitmap mTimeWatermark = AddTimeWatermark(mBitmap); // 判断文件夹是否存在,传入图片存储路径 CreateFile(StaticVariables.mPicPath); String mPath = StaticVariables.mPicPath + System....
  • 这个水印功能是看的慕课网的视频自己跟着学的,视频连接如下:http://www.imooc.com/learn/482...先说说实现水印功能的思路:1、创建图片缓存对象2、创建绘图工具对象(有点类似于画布)3、使用绘图工具对象将原图绘制...
  • 2、我们要在原来的图片上加水印,就相当于要在纸上画画。。。所以我们的画纸应该是原图的一的副本,我们我们需要得到副本并用容器容乃他, 3、画画需要画笔对吧,我们要得到画副本的笔,当然比肯定有粗细。。。参数...
  • package ... import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.F...
  • 使用java代码给视频添加水印

    千次阅读 2019-11-28 15:13:55
    使用java代码给视频添加水印 步骤一:下载相关依赖包: 相关地址:ffmpeg 步骤二:下载ffmpeg依赖软件 相关地址:点击下载 步骤三:直接上代码 类一:FFMPEG package cn.oop.pack.test; import java.util.ArrayList...
  • 首先需要引入两个Jar包分别是:iTextAsian.jar 、itext-2.1.7.jar 可以去 http://download.csdn.net/detail/work201003/9227159 下载;...[java] view plain copy  print? import java.awt.Color;  i
  • 水印要求:左上角为文字水印,左下角为Logo图片水印,右下角为图片水印(如百度定位静态图)。 一、引入Jar依赖 Gradle语法: compile 'net.coobird:thumbnailator:0.4.8' Maven语法: &lt;!-- ...
  • 最近在做一个食品溯源项目,需要对一些图片加上水印。 注释都在代码里了,有啥想法可以在评论区交流(๑•ᴗ•๑)~ ... * 给图片添加水印图片、可设置水印图片旋转角度 * * @param iconPath 水印图片路径 * @p...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,376
精华内容 1,750
关键字:

java添加时间水印

java 订阅