java后台给图片添加水印

不多说直接上代码

下载项目链接:
https://download.youkuaiyun.com/download/new1818java/11865822

复制可用, 给个关注吧(- . -).

有个问题,就是当你引包的时候这三个会报错,解决方案:右键项目properties->java build path->libraries,将JRE删除,重新导入就可以了。 给个关注吧(- . -).

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

package watermark;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.ImageIcon;
 
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
 
public class WaterMark {
     /**
      * 给图片添加水印
      * 
      * @param filePath
      *             需要添加水印的图片的路径
      * @param markContent
      *             水印的文字
      * @param markContentColor
      *             水印文字的颜色
      * @param qualNum
      *             图片质量
      * @return
      */
     public void createMark(String filePath, String markContent,
             Color markContentColor, float qualNum) {
        
         ImageIcon imgIcon = new ImageIcon(filePath);
         Image theImg = imgIcon.getImage();
         int width = theImg.getWidth(null);
         int height = theImg.getHeight(null);
         BufferedImage bimage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
        
         Graphics2D g = bimage.createGraphics();
         g.setColor(markContentColor);
         g.setBackground(Color.white);
         g.drawImage(theImg, 0, 0, null);
         g.drawString(markContent, width /3, height/20); // 添加水印的文字和设置水印文字出现的内容
         g.dispose();
        
         try {
             FileOutputStream out = new FileOutputStream(filePath);
             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
             JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
             param.setQuality(qualNum, true);
             encoder.encode(bimage, param);
             out.close();
            
         } catch (Exception e) {
             return ;
         }
     }
    
     public static void main(String[] args) {
         WaterMark wm = new WaterMark();
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String valueOf = String.valueOf(sdf.format(date));
         wm.createMark("d://test.jpg",valueOf,Color.WHITE,100f);
     }
}
Java添加图片水印通常涉及到图像处理库,比如Apache Commons Imaging、Graphics2D、JavaFX等。以下是一个简单的概述步骤: 1. **引入库**:首先需要将相关的图像处理库添加到项目依赖中,例如如果使用的是Apache Commons Imaging,可以在pom.xml文件中加入: ```xml <dependency> <groupId>commons-imaging</groupId> <artifactId>imaging</artifactId> <version>1.0</version> </dependency> ``` 2. **读取图片**:使用`ImageIO.read()`方法从文件系统加载原始图片。 3. **创建文字水印**:通过`Font`, `TextLayout`, 或者`Canvas`来创建文字,并设置颜色、透明度等属性。 4. **绘制水印**:使用`Graphics2D`或者`BufferedImageOp`将文字画到图片上,可以调整位置和大小以适应图片。 5. **保存结果**:创建一个新的`BufferedImage`,然后将原始图片水印合并并使用`ImageIO.write()`保存到指定路径。 下面是一个简化的示例代码片段: ```java import org.apache.commons.imaging.ImageWriteException; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; public class Watermark { public static void main(String[] args) throws IOException { String inputPath = "input.jpg"; String outputPath = "output_with_watermark.jpg"; // 加载图片 BufferedImage originalImage = ImageIO.read(new File(inputPath)); // 创建文字水印 Font font = new Font("Arial", Font.BOLD, 24); Graphics2D g2d = originalImage.createGraphics(); g2d.setFont(font); g2d.setColor(Color.RED); String watermarkText = "Your Watermark Text"; int x = originalImage.getWidth() - watermarkText.length() * 8; // 根据字体大小调整x坐标 int y = originalImage.getHeight() - 10; // 水印底部 // 绘制水印 g2d.drawString(watermarkText, x, y); // 合并并保存 ImageIO.write结合DrawOnTop(originalImage, watermarkText), "jpg", new File(outputPath)); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值