Java compartir - para añadir imágenes de marca de agua de texto (el texto puede ser girada)

Este artículo presenta la aplicación Java para la imagen añadir una marca de agua de texto, el método de marca de agua de texto, con la participación de Java leer, añadir ajustes de las habilidades operacionales y otros relacionados para una imagen, un amigo en necesidad puede referirse a.

      En muchos casos, el proyecto requiere una cierta imagen de los derechos de autor, es decir, la gente solía salir cuando no se quiere es la imagen original, debe ser el uso de algunas fotos que añadir nuestra propia identidad, entonces se puede pensar en para añadir marcas de agua de texto, rotación, etc. función.

      Método directamente sobre el código, esto es agregar marca de agua de texto para destacar la posición del texto se puede añadir sus propias variables, establecer la función de la altura y anchura actual de la imagen original, que he creado este método para agregar la posición de la esquina derecha imagen inferior.

package com.myFirstSpring.test; 

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;
import javax.swing.ImageIcon;

/** 
 * @author tqf
 * @version 创建时间:2020-4-3 上午10:49:02 
 * 类说明:图片添加水印   文字&图片水印 
 */
public class ImageRemarkUtil {

    // 水印透明度
    private static float alpha = 0.5f;
    // 水印横向位置
    private static int positionWidth = 150;
    // 水印纵向位置
    private static int positionHeight = 300;
    // 水印文字字体
    private static Font font = new Font("宋体", Font.BOLD, 35);
    // 水印文字颜色
    private static Color color = Color.red;

    /**
     * 
     * @param alpha
     *            水印透明度
     * @param positionWidth
     *            水印横向位置
     * @param positionHeight
     *            水印纵向位置
     * @param font
     *            水印文字字体
     * @param color
     *            水印文字颜色
     */
    public static void setImageMarkOptions(float alpha, int positionWidth,
            int positionHeight, Font font, Color color) {
        if (alpha != 0.0f)
            ImageRemarkUtil.alpha = alpha;
        if (positionWidth != 0)
            ImageRemarkUtil.positionWidth = positionWidth;
        if (positionHeight != 0)
            ImageRemarkUtil.positionHeight = positionHeight;
        if (font != null)
            ImageRemarkUtil.font = font;
        if (color != null)
            ImageRemarkUtil.color = color;
    }

   

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

        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);
            // 6、设置水印文字Font
            g.setFont(new Font("宋体", Font.BOLD, 20));
            // 7、设置水印文字透明度
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,alpha));
            // 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
            int  width = srcImg.getWidth(null)-100;
            int  heigth = srcImg.getHeight(null) - 20;
            g.drawString(logoText, width, heigth);
            // 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();
            }
        }
    }

    public static void main(String[] args) {
    	//原始图片路径
        String srcImgPath = "d:/demo.png";  //只需要这一张图片 然后生成4张图片
        //添加的文本
        String logoText = "心觉咨询";

        String targerTextPath = "d:/demo_wz.png";  //添加文字水印之后的图片存放路径
        String targerTextPath2 = "d:/demo_wz2.png";//添加文字 文字旋转-45 水印之后的图片存放路径

        System.out.println("给图片添加水印文字开始...");
        // 给图片添加水印文字
        markImageByText(logoText, srcImgPath, targerTextPath,null);
        
        // 给图片添加水印文字,水印文字旋转-45
        markImageByText(logoText, srcImgPath, targerTextPath2, 45);
        System.out.println("给图片添加水印文字结束...");
        

    }

}
 

Los siguientes son dos procedimientos para generar la imagen de arriba después de la adición de la marca de agua, no hay rotación del primer carácter, el segundo carácter se hace girar por -45 grados

métodos bien para añadir una marca de agua en la imagen de arriba aspectos del texto escrito con la esperanza de que el contenido de este trabajo, de estudio o de trabajo pueden traer un poco de ayuda, si es útil para usted señala como comentario favorita artista! ^ _ ^ 

Publicados 102 artículos originales · ganado elogios 131 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/tanqingfu1/article/details/105291999
Recomendado
Clasificación