`
sxu
  • 浏览: 37860 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

文字水印定位

    博客分类:
  • JAVA
阅读更多
前些日子在网上看过一些关于文字水印的技术,都是大同小异,文字无法定位图片中间。其实可以通过FontMetrics fm = sun.font.FontDesignMetrics.getMetrics(font);获取不同size大小字体的宽度和高度。有了字体的宽度和高度就很容易定位了。

下面是我写的一段代码

package xu;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Transparency;
import java.awt.image.BufferedImage;

/**
* 文字水印
* @author xusheng
*
*/
public class MarkerService {
/**
  *
  * @param content 文字内容
  * @param fontSize 字体大小
  * @return
  */
public BufferedImage doWater(String content, int fontSize) {
  BufferedImage image = null;
  //设置字体类型和大小
  Font font = new Font("宋体", Font.ITALIC, fontSize);
  //加载到FontMetrics中
  FontMetrics fm = sun.font.FontDesignMetrics.getMetrics(font);
  //获取这个文字内容的宽度
  int conWidth = fm.stringWidth(content);
  //获取这个文字内容的高度
  int conHeight = fm.getHeight();
 
  /* 由此宽度和高度确定图片的大小 */
  image = new BufferedImage(conWidth, conHeight, BufferedImage.TYPE_INT_RGB);
  /* 创建Graphics2D */
  Graphics2D g = image.createGraphics();
  /* 再次创建Graphics2D, 设置背景色透明 */
  image = g.getDeviceConfiguration().createCompatibleImage(conWidth, conHeight,
      Transparency.TRANSLUCENT);
  g.dispose(); //释放
  g = image.createGraphics();
  g.setColor(new Color(255, 0, 0));
  //设置渲染
  g.setStroke(new BasicStroke(1));
  //设置字体
  g.setFont(font);
  //设置字体颜色
  g.setColor(Color.gray);
  //画图
  g.drawString(content, 0, fontSize);
  //释放
  g.dispose();
  return image;
}
}



测试类

package run;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import xu.MarkerService;

public class Run {

/**
  * @param args
  */
public static void main(String[] args) {
  MarkerService markerService = new MarkerService();
  BufferedImage image = markerService.doWater("WATER", 60);
  try {
   ImageIO.write(image, "png", new File("d://new.png"));
  } catch (IOException e) {
   e.printStackTrace();
  }
}

}


分享到:
评论

相关推荐

    C#添加文字水印,图片水印,程序实例源代码

    处理过程与文字水印类似,但需要额外考虑图片的缩放和定位: 1. 加载水印图片:同样使用Image类的FromFile方法加载水印图片。 2. 缩放水印图片:可能需要调整水印图片的大小,可以使用Graphics类的DrawImage方法...

    lsb文字水印.rar_beyond4fy_lsb color_lsb文字水印_matlab实现lab文字水印_彩色水印

    LSB(Least Significant Bit)文字水印技术是一种在数字图像中隐藏信息的方法,它通过修改图像数据的最低有效位来嵌入文字水印,而不会显著改变图像的视觉效果。这个压缩包文件“lsb文字水印.rar_beyond4fy_lsb ...

    C#图片加文字水印和图片水印源码DEMO

    添加文字水印涉及到TextRenderer类和Font类。Font类定义了文本的字体、大小和样式,TextRenderer类提供了绘制高质量文本的方法。以下代码展示了如何在图片上添加文字水印: ```csharp Font watermarkFont = new ...

    上传 预览 文字水印 图片水印

    在客户端,可以通过调整CSS样式,使用绝对定位在图片上动态添加文字水印,但这仅限于视觉效果,无法防止图片被复制。 **图片水印**与文字水印类似,但使用的是图像而不是文本。它可以是公司Logo或其他图片,通过...

    java实现图片上传并添加水印效果(文字水印,蒙版,logo图片),自动进行文字大小行数位置匹配 ,文字自动换行

    2. **水印类型**:水印分为文字水印、蒙版水印和logo图片水印。文字水印涉及在图像上绘制文字,需要调整字体、颜色、透明度和角度;蒙版水印则是在图像上覆盖一层半透明的图案或颜色;logo图片水印则是将一个图片...

    生成图片缩微图,图片水印,文字水印

    在IT领域,图片处理是常见的任务之一,包括生成图片缩微图、添加图片水印以及文字水印等操作。这些功能广泛应用于网站、社交媒体、移动应用等,以优化显示效果、保护版权或传达额外信息。以下是对标题和描述中涉及的...

    上传图片加水印(图片水印和文字水印)

    这可能包括水印位置(中心、角落、自由定位等)、透明度、大小、角度以及是否使用图片或文字水印等。这些设置应保存在数据库中,以便在处理上传图片时调用。 5. **水印处理逻辑**:当图片上传后,服务器会读取存储...

    php图片添加文字水印实现代码

    文字水印定位与添加 在上述代码中,文字水印被定位在图片的右下角。使用`imagettftext()`函数添加文字水印,这个函数需要多个参数:图像资源、文字大小、文字角度、文字坐标和颜色等。通过调整`$txt_jiaodu`和坐标...

    php实现打图片和文字水印

    水印分为图片水印和文字水印,前者是将一张小图覆盖到大图上,后者则是直接在图像上绘制文字。 要实现这个功能,我们需要掌握以下几个关键知识点: 1. **GD库或Imagick库**:PHP提供了两种常用的图像处理库,GD库...

    编辑PDF文档文字 去水印神器!

    这个编辑器能够有效地去除PDF中的文字水印和图像水印,同时保持文档的其他内容完整无损。 描述中提到的"原生的PDF编辑器 实在太好用!"意味着这款软件是专门针对PDF设计的,它提供了一套完整的解决方案,包括编辑、...

    Android-PDF文件的文字水印去除去器

    在Android平台上,有时候我们需要处理PDF文件,特别是去除其中的文字水印。这是一项常见的需求,比如在分享文档或进一步编辑时,我们可能不希望看到原始创建者留下的水印。"Android-PDF文件的文字水印去除器"就是...

    [其他类别]上传图片生成缩略图、图片水印、文字水印_7he7upload.zip

    在图片上添加文字水印涉及到文字渲染和定位,包括选择合适的字体、颜色、透明度、角度以及文字在图片上的位置。在Python中,可以使用PIL库的ImageDraw模块绘制文字;在JavaScript中,可以利用HTML5的Canvas API实现...

    C# 为图片添加水印文字

    我们需要一个Graphics对象来在图片上添加文字水印。 5. **DrawString方法**:这是Graphics类的一个重要方法,用于在指定位置绘制文本。我们可以设置字体、颜色、旋转角度、透明度等属性,以实现不同效果的水印。 6...

    扩展TextBox控件实现水印文字提示效果光标离开出现光标定位消失

    使用VS2017中的VB.NET语言来扩展TextBox控件实现水印文字提示效果,光标离开出现光标定位消失。按照设置属性(水印文字WaterText、水印颜色WaterColor和水印字体WaterFont——建立消息机制(重写WndProc方法)——...

    文字图片水印效果(较复杂)

    在C# WinForm中,实现文字水印主要涉及System.Drawing命名空间中的类,如Graphics、Font、SolidBrush等。以下是一些关键步骤: 1. **创建Graphics对象**:这是绘制的基础,可以从PictureBox或Bitmap对象中获取。...

    安卓头像制作图片圆角剪裁相关-Android中实现界面布局文字水印已封装可复用.rar

    同时,为界面添加文字水印也是提高用户体验和保护版权的一种方式。本资源"安卓头像制作图片圆角剪裁相关-Android中实现界面布局文字水印已封装可复用.rar"提供了一个已经封装好的解决方案,可以方便地在其他项目中...

    图像取证——脆弱水印验证图像完整性和实现篡改定位

    在图像取证中,脆弱水印通常被嵌入到图像的敏感区域,如人脸、文字等,以便在后期检测时能准确判断这些关键区域是否被修改。 篡改定位是图像取证中的核心任务。通过对图像进行分析,我们可以识别出哪些部分是原始的...

    产生图片水印和图片加水印文字后,用Window图片查看器查看

    - 计算水印文本的实际尺寸,以便正确定位。 - 对水印文本进行变形处理(通过`Transform`对象),使得水印呈现倾斜效果,增加视觉吸引力。 - 设置水印颜色为半透明的灰色,以减少对图片内容的干扰。 - 使用`...

    图像加水印和水印检测

    水印是一种在图像中嵌入不可见或微弱可见信息的技术,可以是文字、图案或者数字水印。它旨在保护图像的原创性,防止未经授权的使用,同时也可用来传递额外的信息,如作者身份、日期等。水印分为可见水印和不可见水印...

    水印:嵌入图像和文字水印

    标题"水印:嵌入图像和文字水印"意味着我们将探讨如何在图像上添加两种类型的水印:图像水印和文字水印。图像水印通常是公司的Logo或个人头像,而文字水印则可能是版权信息或标语。 在C#中,我们可以使用System....

Global site tag (gtag.js) - Google Analytics