精华内容
下载资源
问答
  • Java图片加文字水印

    2016-04-26 08:45:00
    Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStr...

    Java图片加文字水印

     

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    
    import javax.imageio.ImageIO;
    
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    /**
     * 图片加文字水印
     * @author InJavaWeTrust
     *
     */
    public class Watermark {
    	
    	/**
    	 * 图片加文字水印
    	 * @param text 文字
    	 * @param targetImg 目标图片
    	 * @param fontName 字体名
    	 * @param fontStyle 字体样式
    	 * @param color 字体颜色
    	 * @param fontSize 字体大小
    	 * @param x 文字x坐标
    	 * @param y 文字y坐标
    	 */
    	public static void watermark(String text, String targetImg,
    			String fontName, int fontStyle, Color color, int fontSize, int x,
    			int y) {
    		try {
                File _file = new File(targetImg);
                Image src = ImageIO.read(_file);
                int wideth = src.getWidth(null);
                int height = src.getHeight(null);
                BufferedImage image = new BufferedImage(wideth, height,
                        BufferedImage.TYPE_INT_RGB);
                Graphics g = image.createGraphics();
                g.drawImage(src, 0, 0, wideth, height, null);
                 
                g.setColor(color);
                g.setFont(new Font(fontName, fontStyle, fontSize));
     
                g.drawString(text, wideth - fontSize - x, height - fontSize
                        / 2 - y);
                g.dispose();
                FileOutputStream out = new FileOutputStream(targetImg);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(image);
                out.close();
            } catch (Exception e) {
                System.out.println(e);
            }
    	}
    
    	public static void main(String[] args) {
    		String text = "http://injavawetrust.iteye.com";
    		String targetImg = "C:\\Users\\admin\\Desktop\\ch\\state.png";
    		watermark(text, targetImg, null, Font.BOLD, Color.RED, 20, 240, 10);
    	}
    
    }

     

    转载于:https://www.cnblogs.com/new0801/p/6146651.html

    展开全文
  • 返回的是加水印之后的 byte[] 最好有注释,谢谢了 Exception in thread "main" sun.misc.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Provider it.geosolutions.imageio.stream.input.spi...
  • * 给图片加文字水印 * * @param url 图片的网络地址 * @param pressText s水印文字 * @param targetImg 目标文件 * @param fontName 字体名称 * @param fontStyle 字体风格 * @param fontSize 字体大小 * @...
    package com.product.utils;
    
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    import org.apache.commons.lang.StringUtils;
    
    import javax.imageio.ImageIO;
    
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;
    
    
    @SuppressWarnings("restriction")
    public final class ImageUtil {
    
        /**
         * 给图片+图片水印
         *
         * @param url       --url 地址
         * @param pressImg  -- 水印图片
         * @param targetImg -- 目标文件
         * @param location  水印位置:left-top:左上角,right-top:右上角,left-bottom:左下角,right-bottom:右下角
         * @param degree    水印旋转角度
         */
    
    	public static void pressImage(String url, String pressImg, String targetImg, String location, Integer degree) {
            try {
                // 目标文件
                File _file = toFile(url, new File(targetImg));
                Image src = ImageIO.read(_file);
                int width = src.getWidth(null);
                int height = src.getHeight(null);
                BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = image.createGraphics();
                g.drawImage(src, 0, 0, width, height, null);
                // 水印文件
                File _filebiao = new File(pressImg);
                Image src_biao = ImageIO.read(_filebiao);
                int width_biao = src_biao.getWidth(null);
                int height_biao = src_biao.getHeight(null);
                // 水印坐标
                int x = 0, y = 0;
                if (StringUtils.equals(location, "left-top")) {
                    x += 30;
                    y += 30;
                } else if (StringUtils.equals(location, "right-top")) {
                    x = width - width_biao - 30;
                    y += 30;
                } else if (StringUtils.equals(location, "left-bottom")) {
                    y = height - height_biao - 30;
                    x += 30;
                } else if (StringUtils.equals(location, "right-bottom")) {
                    x = width - width_biao - 30;
                    y = height - height_biao - 30;
                } else {
                    x = (width - width_biao) / 2;
                    y = (height - height_biao) / 2;
                }
                if (null != degree) {
                    // 设置水印旋转
                    g.rotate(Math.toRadians(degree), x, y);
                }
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                g.drawImage(src_biao, x, y, width_biao, height_biao, null);
                // 水印文件结束
                g.dispose();
                //直接修改源文件
                FileOutputStream out = new FileOutputStream(targetImg);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(image);
                out.flush();
                out.close();
                //生成新的文件
                //File sf = new File("D:/imgout/" + "test" + "." + "jpg");
                //ImageIO.write(image, "jpg", sf); // 保存图片
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 给图片加文字水印
         *
         * @param url       图片的网络地址
         * @param pressText s水印文字
         * @param targetImg 目标文件
         * @param fontName  字体名称
         * @param fontStyle 字体风格
         * @param fontSize  字体大小
         * @param location  字体位置:left-top:左上角,right-top:右上角,left-bottom:左下角,right-bottom:右下角
         */
    
    	public static void pressText(String url, String pressText, String targetImg, String fontName, int fontStyle,
                                     int fontSize, String location,Color color) {
            try {
    
                int textWidth = getFontWidth(fontName, fontStyle, fontSize, pressText);
                //File _file = new File(targetImg);
                File _file = toFile(url, new File(targetImg));
                Image src = ImageIO.read(_file);
                int width = src.getWidth(null);
                int height = src.getHeight(null);
                BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = image.createGraphics();
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                g.drawImage(src.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
                g.setColor(color);
                g.setFont(new Font(fontName, fontStyle, fontSize));
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                        0.45f));
                int x = 0, y = 0;
                if (StringUtils.equals(location, "left-top")) {
                    x = 30;
                    y = 30;
                } else if (StringUtils.equals(location, "right-top")) {
                    x = width - textWidth - 30;
                    y = 30;
                } else if (StringUtils.equals(location, "left-bottom")) {
                    x += 30;
                    y = height - 30;
                } else if (StringUtils.equals(location, "right-bottom")) {
                    x = width - textWidth - 30;
                    y = height - 30;
                } else {
                    x = (width - textWidth) / 2;
                    y = (height) / 2;
                }
                g.drawString(pressText, x, y);
                g.dispose();
                FileOutputStream out = new FileOutputStream(targetImg);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                encoder.encode(image);
                out.flush();
                out.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
        }
    
    
        /**
         * 文件保存
         *
         * @param link 图片链接
         * @param file 存入的文件地址
         * @return 下载的文件
         */
        public static File toFile(String link, File file) {
            try {
    
                URL url = new URL(link);
                URLConnection uri = url.openConnection();
                //获取数据流
                InputStream ins = uri.getInputStream();
                OutputStream os = new FileOutputStream(file);
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                    os.write(buffer, 0, bytesRead);
                }
                os.close();
                ins.close();
                return file;
            } catch (Exception e) {
                return null;
            }
    
        }
    
        /**
         * 计算文本占用的width
         *
         * @param fontName  字体名称
         * @param fontStyle 字体风格
         * @param fontSize  字体大小
         * @param pressText 输入文本
         * @return 文字所占用的宽带
         */
    	public static int getFontWidth(String fontName, int fontStyle, int fontSize, String pressText) {
            Font f = new Font(fontName, fontStyle, fontSize);
            FontMetrics fm = sun.font.FontDesignMetrics.getMetrics(f);
            // 高度  
            //System.out.println(fm.getHeight());
            // 单个字符宽度  
            //System.out.println(fm.charWidth('A'));
            // 整个字符串的宽度  
            //System.out.println(fm.stringWidth(pressText));
            return fm.stringWidth(pressText);
    
    
        }
    
    
        public static void main(String[] args) {
            //pressImage("https://cbu01.alicdn.com/img/ibank/2017/041/711/4771117140_1239574879.jpg", "D:/imgin/20181017110944.png", "D:/imgout/x2.jpg", "left-bottom", null);//
            //pressImage("D:/imgin/20181017110944.png", "D:/imgout/1.png", "right-top", null);
            //pressImage("D:/imgin/20181017110944.png", "D:/imgout/1.png", "center", null);
            //pressImage("D:/imgin/20181017110944.png", "D:/imgout/1.png", "left-bottom", null);
            //pressImage("D:/imgin/20181017110944.png", "D:/imgout/1.png", "right-bottom", null);
            //pressText("https://cbu01.alicdn.com/img/ibank/2017/041/711/4771117140_1239574879.jpg", "miraclad发送到发烧是打发打发esgrocery", "D:/imgout/r1.jpg", "黑体", Font.BOLD + Font.ITALIC, 30, "right-top",Color.GRAY);
            //getFontWidth("黑体", Font.BOLD + Font.ITALIC, 30, "miraclesgrocery");
        	//System.out.println(Color.RED);
        	//System.out.println(Color.WHITE);
        	//System.out.println(Color.GRAY);
        }
    
    
    }
    

     

    转载于:https://my.oschina.net/u/3154333/blog/2253331

    展开全文
  • JAVA处理图片 加文字水印以及灰色透明背景,处理图片
  • 包含了一些java图片操作处理的方法: 1.给图片添加图片水印 2.给图片添加文字水印 3.图片缩放 *主方法测试代码简单易懂
  • java图片水印文字水印

    2012-05-03 14:59:31
    * 文字水印 * @param pressText 水印文字 * @param targetImg 目标图片 * @param fontName 字体名称 * @param fontStyle 字体样式 * @param color 字体颜色 * @param fontSize 字体大小 * @param x ...
  • 主要为大家详细介绍了java实现在图片加文字水印的方法,水印可以是图片或者文字,操作方便,感兴趣的小伙伴们可以参考一下
  • import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; //import java.io....
    package com.fh.util;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import javax.imageio.ImageIO;
    //import java.io.FileOutputStream;
    //import com.sun.image.codec.jpeg.JPEGCodec;
    //import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    /**
     * 说明:图片水印处理类
     * 作者:FH Admin
     * from:www.fhadmin.org
     */
    public class Watermark {
    	
    		private	static String strFWATERM,strIWATERM;
    		
    		static{
    			strFWATERM = Tools.readTxtFile(Const.FWATERM);	//读取文字水印配置
    			strIWATERM = Tools.readTxtFile(Const.IWATERM);	//读取图片水印配置
    		}
    		
    		/**
    		 * 刷新
    		*/
    		public static void fushValue(){
    			strFWATERM = Tools.readTxtFile(Const.FWATERM);	//读取文字水印配置
    			strIWATERM = Tools.readTxtFile(Const.IWATERM);	//读取图片水印配置
    		}
    			
    		/**
    		 * @param imagePath 图片全路径
    		*/
    	  	public static void setWatemark(String imagePath){ 
    	  		//文字水印
    	  		if(null != strFWATERM && !"".equals(strFWATERM)){
    				String strFW[] = strFWATERM.split(",fh,");
    				if(strFW.length == 5){
    					if("yes".equals(strFW[0])){
    						pressText(strFW[1].toString(), imagePath, "", 1, Color.RED,Integer.parseInt(strFW[2]), Integer.parseInt(strFW[3]), Integer.parseInt(strFW[4]));	//文字
    					}
    				}
    			}
    	  		//图片水印
    			if(null != strIWATERM && !"".equals(strIWATERM)){
    				String strIW[] = strIWATERM.split(",fh,");
    				if(strIW.length == 4){
    					if("yes".equals(strIW[0])){
    						pressImage(PathUtil.getClasspath() + Const.FILEPATHIMG+strIW[1], imagePath, Integer.parseInt(strIW[2]), Integer.parseInt(strIW[3]));
    					}
    				}
    			}
    		  } 
    	  
    	    /**
    	     * 把图片印刷到图片上
    	     * 
    	     * @param pressImg --
    	     *            水印文件
    	     * @param targetImg --
    	     *            目标文件
    	     * @param x
    	     *            --x坐标
    	     * @param y
    	     *            --y坐标
    	     */
    	    public final static void pressImage(String pressImg, String targetImg,
    	            int x, int y) {
    	        try {
    	            //目标文件
    	            File _file = new File(targetImg);
    	            Image src = ImageIO.read(_file);
    	            int wideth = src.getWidth(null);
    	            int height = src.getHeight(null);
    	            BufferedImage image = new BufferedImage(wideth, height,
    	                    BufferedImage.TYPE_INT_RGB);
    	            Graphics g = image.createGraphics();
    	            g.drawImage(src, 0, 0, wideth, height, null);
    
    	            //水印文件
    	            File _filebiao = new File(pressImg);
    	            Image src_biao = ImageIO.read(_filebiao);
    	            int wideth_biao = src_biao.getWidth(null);
    	            int height_biao = src_biao.getHeight(null);
    	            //g.drawImage(src_biao, (wideth - wideth_biao) / 2,(height - height_biao) / 2, wideth_biao, height_biao, null);
    	            g.drawImage(src_biao, x, y, wideth_biao, height_biao, null);
    	            //水印文件结束
    	            g.dispose();
    	            /*FileOutputStream out = new FileOutputStream(targetImg);
    	            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    	            encoder.encode(image);
    	            out.close();*/
    	            String formatName = targetImg.substring(targetImg.lastIndexOf(".") + 1);
    	            ImageIO.write(image, /*"GIF"*/ formatName /* format desired */ , new File(targetImg) /* target */ );
    	            
    	        } catch (Exception e) {
    	            e.printStackTrace();
    	        }
    	    }
    
    	    /**
    	     * 打印文字水印图片
    	     * 
    	     * @param pressText
    	     *            --文字
    	     * @param targetImg --
    	     *            目标图片
    	     * @param fontName --
    	     *            字体名
    	     * @param fontStyle --
    	     *            字体样式
    	     * @param color --
    	     *            字体颜色
    	     * @param fontSize --
    	     *            字体大小
    	     * @param x --
    	     *            偏移量
    	     * @param y
    	     */
    
    	    public static void pressText(String pressText, String targetImg,
    	    		String fontName, int fontStyle, Color color, int fontSize, int x,int y) {
    	        try {
    	            File _file = new File(targetImg);
    	            Image src = ImageIO.read(_file);
    	            int wideth = src.getWidth(null);
    	            int height = src.getHeight(null);
    	            BufferedImage image = new BufferedImage(wideth, height,
    	                    BufferedImage.TYPE_INT_RGB);
    	            Graphics g = image.createGraphics();
    	            g.drawImage(src, 0, 0, wideth, height, null);
    	            g.setColor(color);
    	            g.setFont(new Font(fontName, fontStyle, fontSize));
    	            g.drawString(pressText, x, y);
    	            g.dispose();
    	            /*FileOutputStream out = new FileOutputStream(targetImg);
    	            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    	            encoder.encode(image);
    	            out.close();*/
    	            String formatName = targetImg.substring(targetImg.lastIndexOf(".") + 1);
    	            ImageIO.write(image, /*"GIF"*/ formatName /* format desired */ , new File(targetImg) /* target */ );
    	        } catch (Exception e) {
    	            System.out.println(e);
    	        }
    	    }  
    	  
    	
    	
    }
    

     

    展开全文
  • java图片加文字水印

    2017-02-06 17:32:11
    package com.xiaoxiao.pic; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; imp
    package com.xiaoxiao.pic;
    


    import java.awt.AlphaComposite;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;


    import javax.imageio.ImageIO;


    public class PicWo {

    public static void main(String[] args) {

    markImageByText("**科技","C:/Users/xiao/Desktop/aa.jpg","C:/Users/xiao/Desktop/cc.jpg");

    }

    public static void markImageByText(String logoText, String srcImgPath,
               String targerPath) {
           markImageByText(logoText, srcImgPath, targerPath, null);
       }


       /**
        * 给图片添加水印文字、可设置水印文字的旋转角度
        * 
        * @param logoText
        * @param srcImgPath
        * @param targerPath
        * @param degree
        */
       public static void markImageByText(String logoText, String srcImgPath,
               String targerPath, Integer degree) {
        degree = -45;


           InputStream is = null;
           OutputStream os = null;
           try {
               // 1、源图片
               Image srcImg = ImageIO.read(new File(srcImgPath));
               BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),
                       srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);


               // 2、得到画笔对象
               Graphics2D g = buffImg.createGraphics();
               // 3、设置对线段的锯齿状边缘处理
               g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                       RenderingHints.VALUE_INTERPOLATION_BILINEAR);
               g.drawImage(
                       srcImg.getScaledInstance(srcImg.getWidth(null),
                               srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
                       null);
               // 4、设置水印旋转
               if (null != degree) {
                   g.rotate(Math.toRadians(degree),
                           (double) buffImg.getWidth() / 2,
                           (double) buffImg.getHeight() / 2);
               }
               // 5、设置水印文字颜色
               g.setColor(Color.blue);
               // 6、设置水印文字Font
               g.setFont(new Font("宋体", Font.BOLD, 75));
               // 7、设置水印文字透明度
               g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                       0.5f));
               // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
               int x = 150;
               int y = 150;
               for(int i = 0;i<4;i++){
                g.drawString(logoText, x, y);
                x += 150;
                y += 150;
               }
               //g.drawString(logoText, 150, 300);
               // 9、释放资源
               g.dispose();
               // 10、生成图片
               os = new FileOutputStream(targerPath);
               ImageIO.write(buffImg, "jpg", os);


               System.out.println("图片完成添加水印文字");


           } catch (Exception e) {
               e.printStackTrace();
           } finally {
               try {
                   if (null != is)
                       is.close();
               } catch (Exception e) {
                   e.printStackTrace();
               }
               try {
                   if (null != os)
                       os.close();
               } catch (Exception e) {
                   e.printStackTrace();
               }
           }
       }




    }
    展开全文
  • java图片加水印,在网上有很多资料,但我想要一个能自适应图片大小,将水印加图片中间或右下角,这个问题我觉得应该是一个算法的问题 得根据图片大小调整水印文字的字体大小,及显示缩进比例 package ...
  • java图片处理 文字水印 图片水印 缩放 补白
  • java图片文字水印

    2014-02-27 23:01:11
    java,给图片加上文字或者图片水印文字可设置颜色,大小等
  • java 程序图片加水印

    2010-07-05 12:37:43
    java 程序图片加水印 加文字 任何图片都可以java 程序图片加水印 加文字 任何图片都可以java 程序图片加水印 加文字 任何图片都可以java 程序图片加水印 加文字 任何图片都可以
  • 场景为:前端传入转码后的base64图片字符串,后台加水印并转为图片,再上传
  • java图片加水印文字

    2016-01-12 17:24:24
     public static final int FONT_SIZE = 18; //文字大小  public static final String ... //需要文字  /**  *  * @param targetImg 图片路径  */  public static void pressText(String targe
  • import java.io. * ; import java.text.DecimalFormat; import java.awt.... import java.awt.image.BufferedImage; import javax.imageio.... * @param newImagePath 输出图片路径 * @param markContent 水印内容 .
  • Java图片添加文字水印
  • java 实现图片水印 文字水印

    千次阅读 2016-12-16 14:12:15
    * @Description:图片水印  * 图片水印实现思路:  * 1.创建缓存图片对象--BufferedImage ...使用绘图工具将水印文字图片)绘制到缓存图片对象  * 5.创建图片编码工具类--JPEGImageEncoder(由于java
  • 在上传图片加水印图片: import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; ...
  • 水印操作有很多,例如:给图片添加文字、图片水印,给pdf文件添加水印,给文件盖公章,这类需求还是时常会遇到的,今天就简单记录一下给图片添加文字水印的demo,仅供大家参考,后续会写别的情况的添加水印的demo...
  • Java图片添加文字水印
  • 主要介绍了Java图片处理 (文字水印、图片水印、缩放、补白)代码实例,本文直接给出实现代码,需要的朋友可以参考下
  • package ... import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java....
  • 主要介绍了Java实现给图片添加图片水印,文字水印及马赛克的方法,涉及java针对图片的读取、水印添加、马赛克设置等相关操作技巧,需要的朋友可以参考下

空空如也

空空如也

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

java图片加文字水印

java 订阅