java画图工具来添加水印

用Java代码给图片加水印

不多哔哔,直接上代码:

    /**
     * @param srcImgFile       原图片文件对象
     * @param outFile          输出图片文件对象
     * @param waterMarkContent 水印内容
     * @param markContentColor 水印颜色
     * @param rate             字体间距
     * @param x                x轴位置
     * @param y                y轴位置
     * @param font             字体
     */
    public static void addWaterMark(File srcImgFile, File outFile, String waterMarkContent, Color markContentColor, double rate, int x, int y, Font font) {


        try {
            // 读取原图片信息
            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(); // 创建Graphics2D画笔对象
            g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
            g.setColor(markContentColor); //根据图片的背景设置水印颜色
            g.setFont(font);              //设置字体

            WaterMarkUtils.MyDrawString(waterMarkContent,x,y,rate,g); // 设置字体间距加输出
            
            g.dispose(); // 进行处理
            // 输出图片  
            FileOutputStream outImgStream = new FileOutputStream(outFile); // 创建文件输出流
            ImageIO.write(bufImg, "jpg", outImgStream);
            System.out.println("添加水印完成");
            outImgStream.flush(); // 刷新文件
            outImgStream.close(); // 释放资源
        } catch (Exception e) {
            System.out.println("异常");
            e.printStackTrace();
        }
    }
设置字体间距

这个是在百度上找的,原贴的地址https://blog.csdn.net/zixiaomuwu/article/details/51068698

    /**
     * 设置字体间距加输出
     * @param str  输出字符串
     * @param x    x轴
     * @param y    y轴
     * @param rate 字体间距
     * @param g    画笔对象
     */
    public static void MyDrawString(String str,int x,int y,double rate,Graphics2D g){
        String tempStr=new String();
        int orgStringWight=g.getFontMetrics().stringWidth(str);
        int orgStringLength=str.length();
        int tempx=x;
        int tempy=y;
        while(str.length()>0)
        {
            tempStr=str.substring(0, 1);
            str=str.substring(1, str.length());
            g.drawString(tempStr, tempx, tempy);
            tempx=(int)(tempx+(double)orgStringWight/(double)orgStringLength*rate);
        }
    }

转载于:https://my.oschina.net/u/4068190/blog/3074646

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Jacob 是一个 Java 与 Microsoft Office 交互的开源项目。它可以实现 Java 与 Office 应用程序(如 Word、Excel、PowerPoint)之间的互操作,包括打开、读取、编辑和保存文档。如果您需要对 PDF 文件添加水印,可以使用 iText 库。下面是一个简单的示例代码: ```java import java.io.File; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfWriter; public class AddWatermark { public static void main(String[] args) { try { // 创建文档对象 Document document = new Document(PageSize.A4, 50, 50, 50, 50); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File("test.pdf"))); document.open(); // 添加水印 PdfContentByte content = writer.getDirectContent(); Font font = new Font(Font.FontFamily.HELVETICA, 40); Paragraph watermark = new Paragraph("Confidential", font); watermark.setAlignment(Element.ALIGN_CENTER); content.beginText(); float width = PageSize.A4.getWidth(); float height = PageSize.A4.getHeight(); content.showTextAligned(Element.ALIGN_CENTER, watermark, width / 2, height / 2, 45); content.endText(); // 关闭文档 document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码使用 iText 库创建了一个名为 "test.pdf" 的 PDF 文件,并在其中添加了一个名为 "Confidential" 的水印。如果您需要更改水印的样式或位置,请修改上述代码中的相应参数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值