zoukankan      html  css  js  c++  java
  • 用Java实现给图片添加文字

    package image;
    
    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.FileOutputStream;
    
    import javax.imageio.ImageIO;
    
    
    public class WaterMarkUtils {
    
        
        public void addWaterMark(String srcImgPath, String tarImgPath, String waterMarkContent,Color markContentColor,Font font) {
    
            try {
                // 读取原图片信息
                File srcImgFile = new File(srcImgPath);//得到文件
                Image srcImg = ImageIO.read(srcImgFile);//文件转化为图片
                int srcImgWidth = srcImg.getWidth(null);//获取图片的宽
                int srcImgHeight = srcImg.getHeight(null);//获取图片的高
                // 加水印
                BufferedImage bufImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
                Graphics2D g = bufImg.createGraphics();
                g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
                g.setColor(markContentColor); //根据图片的背景设置水印颜色
                g.setFont(font);              //设置字体
    
                //设置水印的坐标
                int x = srcImgWidth - 2*getWatermarkLength(waterMarkContent, g);  
                int y = srcImgHeight - 2*getWatermarkLength(waterMarkContent, g);  
                g.drawString(waterMarkContent, x, y);  //画出水印
                g.dispose();  
                // 输出图片  
                FileOutputStream outImgStream = new FileOutputStream(tarImgPath);  
                ImageIO.write(bufImg, "jpg", outImgStream);
                System.out.println("添加水印完成");  
                outImgStream.flush();  
                outImgStream.close();  
    
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
        public int getWatermarkLength(String waterMarkContent, Graphics2D g) {  
            return g.getFontMetrics(g.getFont()).charsWidth(waterMarkContent.toCharArray(), 0, waterMarkContent.length());  
        }  
        public static void main(String[] args) {
            Font font = new Font("微软雅黑", Font.PLAIN, 35);                     //水印字体
            String srcImgPath="H:/s.jpg"; //源图片地址
            String tarImgPath="H:/t.jpg"; //待存储的地址
            String waterMarkContent="图片来源:http://blog.csdn.net/zjq_1314520";  //水印内容
            Color color=new Color(255,255,255,128);                               //水印图片色彩以及透明度
            new WaterMarkUtils().addWaterMark(srcImgPath, tarImgPath, color, waterMarkContent,font);
    
        }
    }
    岁月无声无息的溜走,除了带走一个无聊者的时光,还会沉淀一个努力者的人生。
  • 相关阅读:
    085 Maximal Rectangle 最大矩形
    084 Largest Rectangle in Histogram 柱状图中最大的矩形
    083 Remove Duplicates from Sorted List 有序链表中删除重复的结点
    082 Remove Duplicates from Sorted List II 有序的链表删除重复的结点 II
    081 Search in Rotated Sorted Array II 搜索旋转排序数组 ||
    080 Remove Duplicates from Sorted Array II 从排序阵列中删除重复 II
    079 Word Search 单词搜索
    078 Subsets 子集
    bzoj2326: [HNOI2011]数学作业
    bzoj2152: 聪聪可可
  • 原文地址:https://www.cnblogs.com/dayandday/p/9559485.html
Copyright © 2011-2022 走看看