`

java添加 img /string 水印

    博客分类:
  • java
阅读更多
import java.awt.Color;
import java.awt.Graphics;
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;
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 WaterImg {
    /** *//**
     * 给图片添加水印
     * 
     * @param filePath
     *            需要添加水印的图片的路径
     * @param markContent
     *            水印的文字
     * @param markContentColor
     *            水印文字的颜色
     * @param qualNum
     *            图片质量
     * @return
     */
    public boolean 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-80, height-80); // 添加水印的文字和设置水印文字出现的内容
        g.dispose();
        try {
        	 /**
             *Encoder是编码器,就是把你画的东东(在内存里是一个Image也是一个OutputStream)按JPEG方式编码,这样你才能存成JPG图片。 
             *Decoder是解码器,就是把你读进来的JPEG的图片转成一般的Stream
             *jdk引入javax.imageio的包之后,上面两个东东就不容易用到了	
             */
        	
            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 false;
        }
        return true;
    }
    
    /** *//**
     * 把图片印刷到图片上  g.draw
     * 
     * @param pressImg --
     *            水印文件
     * @param targetImg --
     *            目标文件
     * @param x
     *            --x坐标
     * @param y
     *            --y坐标
     */
    public final static void pressImage(String targetImg,String pressImg) {
        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);

            //press水印文件
            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.dispose();
            FileOutputStream out = new FileOutputStream(targetImg);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(image);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    
    
    public static void main(String[] args){
    	WaterImg water=new WaterImg();
    	//boolean flag=water.createMark("E:/src.jpg","www.test.com",Color.blue,1f);
    	//System.out.println(flag);
    	pressImage("E:/press.jpg","E:/target.jpg");
    }
}
分享到:
评论

相关推荐

    java jxl添加水印(基于jxl2.6.12修改编译版)_之前发布的大家不要去下,那个版本有问题,本版本经过测试

    因数据安全,需要将生成的报表xls,添加水印,所以自已在jxl中进行代码修改。 使用例子 public class testJxl { public static void main(String[] args) throws Exception { OutputStream out = new ...

    java图片文字水印

    在Java编程中,添加文字或图片水印是一项常见的图像处理任务,主要应用于版权保护、品牌宣传等场景。本文将深入探讨如何使用Java实现这一功能,包括文字水印和图片水印的创建,以及如何调整文字的颜色、大小等属性。...

    JSP程序代码添加水印

    绝对好使。... public static boolean createMark(String filePath, String watermark) { ImageIcon imgIcon = new ImageIcon(filePath); Image theImg = imgIcon.getImage(); 继续? 下载吧。

    java jxl添加水印(基于jxl2.6.12修改)(因编译打包问题正在修正,请勿下载)

    因数据安全,需要将生成的报表xls,添加水印,所以自已在jxl中进行代码修改。 使用例子 public class testJxl { public static void main(String[] args) throws Exception { OutputStream out = new ...

    给照片加水印的程序代码

    以上代码展示了如何在Java中实现为图片添加水印的功能。通过导入必要的包、定义类和方法、加载图像、创建图像缓冲区、添加水印以及输出带水印的图像等步骤,我们能够有效地完成这一任务。这些知识点对于从事图像处理...

    水印代码

    ### 水印代码知识点详解 ...通过以上分析,我们可以看到提供的Java代码实现了两种类型的水印添加功能——图像水印和文本水印,并详细介绍了其实现细节和关键API的使用。这对于理解和实现自己的水印功能非常有帮助。

    Spire.Xls 3.8.6 破解版 只适用于通过xls公式导出图片去水印。绝对能用 导出的图片绝对去水印。

    Spire.Xls 3.8.6 破解版 只适用于通过xls公式导出图片去水印。绝对能用 导出的图片绝对去水印。注意:只适合 导出图像时候去水印。代码示例: ... imgs.Save(string.Format("XXX.png"), ImageFormat.Png);

    图片叠加效果Java代码实现

    Java图片叠加效果是指在Java中实现图片的叠加,叠加的图片可以是水印、Logo、文字等元素。通过Java代码可以实现图片的叠加,生成新的图片。在Java中,图片叠加可以使用Java的图形类库,例如Java.awt和Java.imageio来...

    Jmagick圖片處理

    Jmagick 是一个 Java 接口,用于 ImageMagick 图形库,它提供了一系列强大的功能,包括图片缩放、翻转、添加水印等复杂的图形处理操作。这些功能在很多应用中都非常有用,例如在 Web 应用程序中优化用户上传的图片...

    Spire.Pdf.jar

    总之,**Spire.Pdf.jar** 是一个强大且全面的PDF处理工具,尤其适用于Java开发环境,提供了一套完整的API来满足各种PDF操作需求,包括PDF到IMG的转换。通过合理的编程,可以轻松地将PDF文档转换为图像,以适应不同的...

    struts2图片上传

    `setImg`方法包括了调整图片尺寸、添加水印以及将图片转换为字节数组等操作,以便存储到数据库或者文件系统中: ```java private void setImg(File f) throws Exception { // ... 缩放和处理图片的代码 ... } ``` ...

    itext根据模板导出pdf.zip

    IText是Aditya Birla Software Ltd开发的一款Java库,其主要功能包括创建PDF文档、填充PDF表单、数字签名以及添加水印等。IText库支持多种操作系统和编程语言,如Java、C#和.NET。通过IText,开发者可以轻松地进行...

    image:Golang图像编码器

    例如,你可以用它来创建缩略图、添加水印、调整图像质量等。 总结,Golang的图像编码器是其标准库的一部分,提供了一套简洁而强大的API,支持多种图像格式的编码和解码。开发者可以根据需求轻松地集成图像处理功能...

Global site tag (gtag.js) - Google Analytics