`
一生漂泊
  • 浏览: 11248 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java给图片添加文字水印并消除锯齿

    博客分类:
  • Java
 
阅读更多

package com.walkerjava.utils

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.RenderingHints;

import java.awt.font.TextAttribute;

import java.awt.image.BufferedImage;

import java.io.FileOutputStream;

import java.text.AttributedCharacterIterator;

import java.text.AttributedString;

 

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 Test {

 

        /**

         * 

         * @param souchFilePath

         *            :源图片路径

         * @param targetFilePath

         *            :生成后的目标图片路径

         * @param markContent

         *            :要加的文字

         * @param markContentColor

         *            :文字颜色

         * @param qualNum

         *            :质量数字

         * @param fontType

         *            :字体类型

         * @param fontSize

         *            :字体大小

         * @return

         */

        public static void createMark(String souchFilePath, String targetFilePath,

                                  String markContent, Color markContentColor, float qualNum,

                                  String fontType, int fontSize, int w, int h, Color color) {

                          markContentColor = color;

                          /* 构建要处理的源图片 */

                          ImageIcon imageIcon = new ImageIcon(souchFilePath);

                          /* 获取要处理的图片 */

                          Image image = imageIcon.getImage();

                          // Image可以获得图片的属性信息

                          int width = image.getWidth(null);

                          int height = image.getHeight(null);

                          // 为画出与源图片的相同大小的图片(可以自己定义)

                          BufferedImage bImage = new BufferedImage(width, height,

                                          BufferedImage.TYPE_INT_RGB);

                          // 构建2D画笔

                          Graphics2D g = bImage.createGraphics();

                          /* 设置2D画笔的画出的文字颜色 */

                          g.setColor(markContentColor);

                          /* 设置2D画笔的画出的文字背景色 */

                          g.setBackground(Color.white);

                          /* 画出图片 */

                          g.drawImage(image, 0, 0, null);

                          /* --------对要显示的文字进行处理-------------- */

                          AttributedString ats = new AttributedString(markContent);

                          Font font = new Font(fontType, Font.BOLD, fontSize);

                          g.setFont(font);

                         /* 消除java.awt.Font字体的锯齿 */

                          g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

                                                    RenderingHints.VALUE_ANTIALIAS_ON);

                          /* 消除java.awt.Font字体的锯齿 */

                    更多实例请访问 http://www.walkerjava.com/forum.php?mod=viewthread&tid=135

                          // font = g.getFont().deriveFont(30.0f);

                          ats.addAttribute(TextAttribute.FONT, font, 0, markContent.length());

                          AttributedCharacterIterator iter = ats.getIterator();

                          /* 添加水印的文字和设置水印文字出现的内容 ----位置 */

                          g.drawString(iter, width - w, height - h);

                          /* --------对要显示的文字进行处理-------------- www.it165.net */

                          g.dispose();// 画笔结束

                          try {

                                        // 输出 文件 到指定的路径

                                        FileOutputStream out = new FileOutputStream(targetFilePath);

                                        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

                                        JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bImage);

                                        param.setQuality(qualNum, true);

                                        encoder.encode(bImage, param);

                                        out.close();

                          } catch (Exception e) {

                                        e.printStackTrace();

                          }

        }

 

        public static void main(String[] args) {

                          Test.createMark("d:\\image\\daili.jpg", "d:\\image\\601.jpg",

                                          "这是用java程序给图片添加的文字水印", null, 1, "方正楷体简体", 30, 700, 300,

                                          Color.GRAY);

        }

分享到:
评论

相关推荐

    java生产文字图片(消除线段的锯齿状边缘)

    在Java编程语言中,生成文字图片并消除线段锯齿状边缘是一项常见的需求,尤其是在创建图形用户界面(GUI)或进行图像处理时。这个过程通常涉及到二维图形渲染和字体渲染技术。下面我们将深入探讨如何在Java中实现这...

    Java为图片添加水印功能.rar

    Java为图片添加水印功能,这个水印类的操作比较实用,不但可以旋转水印图像,还可设置其水印图片的透明度,使其与原图融为一体,给图片添加水印,可以设置图片水印的角度,设置对线段的锯齿状边缘处理,第一参数->...

    Java图片加水印,支持旋转和透明度设置

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    图片转字符图片工具类,支持 Gif 动画、图片合并、图片加水印、文字消除锯齿、图片无损保存、图片像素风、九宫格图、百叶图等

    这个工具类专注于将图片转换为字符图片,并提供了丰富的功能,如Gif动画处理、图片合并、加水印、文字锯齿消除、无损保存、像素风格化、九宫格布局、百叶窗效果以及双重曝光等。以下是对这些功能的详细解释: 1. **...

    图片加文字水印(1.0)

    总的来说,"图片加文字水印(1.0)"是一个专注于为图片添加文字水印的工具或库,涉及到的技术包括图像处理、文本渲染、透明度控制、文件操作等多个方面。通过理解这些知识点,开发者可以更好地利用或开发类似功能,...

    java程序给图片添加水印源码整理

    这个"java程序给图片添加水印源码整理"的压缩包文件包含了相关的源代码和资源,帮助开发者理解并实现这个功能。接下来,我们将详细讨论如何在Java中实现这一功能,并探讨相关的关键知识点。 首先,我们需要了解Java...

    CDC画图,消除锯齿

    本篇文章将深入探讨如何利用GDI+(Graphics Device Interface Plus)在C++中实现画图,并特别关注消除锯齿的技术。 GDI+是微软Windows平台上的一种图形处理库,它为开发者提供了丰富的图形绘制功能,包括直线、曲线...

    java抗锯齿字体

    Wrap Look and Feel acts as a decorator for the current ... This Look and Feel is a powerful tool you can use to enhance the appearance of any Java application, whether you have the source code or not.

    java图片上添加文字代码.rar

    这个名为"java图片上添加文字代码.rar"的压缩包很可能是包含了一个或多个Java类,这些类提供了将文字添加到图片上的功能。让我们深入探讨一下如何在Java中实现这样的功能,以及涉及到的相关技术。 首先,我们需要...

    Java图片处理 (文字水印、图片水印、缩放、补白)代码实例

    Java图片处理技术是Java开发中常见的一种需求,用于创建、编辑和操作图像。在这个实例中,我们将探讨如何在Java中实现文字水印、图片水印、图像缩放以及补白功能。以下是一些关键知识点: 1. **Java AWT 和 Swing ...

    利用chromedirver + canvas 生成无锯齿文字 大图

    java 生成图片大字容易产生锯齿,使用canvas绘制图片然后用base64保存,可以生成无锯齿 大图。

    C#使用GDI+给图片加文字或图片水印

    以下是一个添加文字水印的示例: ```csharp public static void AddTextWatermark(string sourceImagePath, string watermarkText, string destImagePath) { // 加载源图片 Image sourceImage = Image.FromFile...

    java填充圆角矩形消除锯齿Demo.rar

    主要代码: BufferedImage image = new BufferedImage(400, 120, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g2d = image.createGraphics(); g2d.setColor(Color.BLUE); ... g2d.fillRoundRect(0, 0, 400, 120,...

    java实现倾斜水印铺满整张图

    Java 实现倾斜水印铺满整张图是一个常见的图像处理任务,主要涉及到图像处理库的使用,特别是Java的`java.awt`和`java.awt.image`包。以下将详细讲解实现这个功能的关键步骤和代码解析: 1. **设计水印图片**: ...

    PHP 图片添加水印(文字和图片)

    - **抗锯齿**:在添加文字水印时,启用抗锯齿功能可以提高清晰度。 在处理过程中,应尽量优化每一步,例如使用高质量的字体文件、确保图片和水印尺寸适应、正确设置透明度以减少模糊感等。同时,对代码进行调试,...

    VB用GDI+加载图片消除锯齿

    VB中使用GDI+消除锯齿模块

    VB6无损图像缩放 最大限度消除锯齿 GDI实现

    实现这样的功能通常涉及创建一个GDI兼容的画布,加载源图像,然后使用`StretchBlt`或`BitBlt`函数进行缩放,并选择合适的模式(如SRCCOPY)和参数(如ANTIALIASED)来实现抗锯齿效果。最后,将结果绘制到目标设备上...

    C#WinForm透明窗体 去除不规则锯齿

    4. **自定义绘图**:在上层窗体的`OnPaint`事件中,手动绘制背景图片,并确保图片边缘平滑无锯齿。 ```csharp private void Form1_Paint(object sender, PaintEventArgs e) { // 加载并绘制背景图片 Image ...

    java实现图片加水印效果

    图片加水印效果是指在图片上添加文字或图案,以便标记图片的所有权或来源。 Java实现图片加水印效果需要使用Java的图像处理类库,包括java.awt和javax.imageio包。 首先,需要使用java.awt包中的Graphics2D类来绘制...

    java图片生成器

    Java图片生成器是一种基于Java编程语言的工具,用于创建、编辑或转换图像文件。这个工具可能包含各种功能,如绘制图形、添加文字、处理图像效果、读取和写入不同图像格式等。在Java中实现图片生成器涉及到对Java 2D ...

Global site tag (gtag.js) - Google Analytics