前些日子在网上看过一些关于文字水印的技术,都是大同小异,文字无法定位图片中间。其实可以通过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();
}
}
}
分享到:
相关推荐
处理过程与文字水印类似,但需要额外考虑图片的缩放和定位: 1. 加载水印图片:同样使用Image类的FromFile方法加载水印图片。 2. 缩放水印图片:可能需要调整水印图片的大小,可以使用Graphics类的DrawImage方法...
LSB(Least Significant Bit)文字水印技术是一种在数字图像中隐藏信息的方法,它通过修改图像数据的最低有效位来嵌入文字水印,而不会显著改变图像的视觉效果。这个压缩包文件“lsb文字水印.rar_beyond4fy_lsb ...
添加文字水印涉及到TextRenderer类和Font类。Font类定义了文本的字体、大小和样式,TextRenderer类提供了绘制高质量文本的方法。以下代码展示了如何在图片上添加文字水印: ```csharp Font watermarkFont = new ...
在客户端,可以通过调整CSS样式,使用绝对定位在图片上动态添加文字水印,但这仅限于视觉效果,无法防止图片被复制。 **图片水印**与文字水印类似,但使用的是图像而不是文本。它可以是公司Logo或其他图片,通过...
2. **水印类型**:水印分为文字水印、蒙版水印和logo图片水印。文字水印涉及在图像上绘制文字,需要调整字体、颜色、透明度和角度;蒙版水印则是在图像上覆盖一层半透明的图案或颜色;logo图片水印则是将一个图片...
在IT领域,图片处理是常见的任务之一,包括生成图片缩微图、添加图片水印以及文字水印等操作。这些功能广泛应用于网站、社交媒体、移动应用等,以优化显示效果、保护版权或传达额外信息。以下是对标题和描述中涉及的...
这可能包括水印位置(中心、角落、自由定位等)、透明度、大小、角度以及是否使用图片或文字水印等。这些设置应保存在数据库中,以便在处理上传图片时调用。 5. **水印处理逻辑**:当图片上传后,服务器会读取存储...
文字水印定位与添加 在上述代码中,文字水印被定位在图片的右下角。使用`imagettftext()`函数添加文字水印,这个函数需要多个参数:图像资源、文字大小、文字角度、文字坐标和颜色等。通过调整`$txt_jiaodu`和坐标...
水印分为图片水印和文字水印,前者是将一张小图覆盖到大图上,后者则是直接在图像上绘制文字。 要实现这个功能,我们需要掌握以下几个关键知识点: 1. **GD库或Imagick库**:PHP提供了两种常用的图像处理库,GD库...
这个编辑器能够有效地去除PDF中的文字水印和图像水印,同时保持文档的其他内容完整无损。 描述中提到的"原生的PDF编辑器 实在太好用!"意味着这款软件是专门针对PDF设计的,它提供了一套完整的解决方案,包括编辑、...
在Android平台上,有时候我们需要处理PDF文件,特别是去除其中的文字水印。这是一项常见的需求,比如在分享文档或进一步编辑时,我们可能不希望看到原始创建者留下的水印。"Android-PDF文件的文字水印去除器"就是...
在图片上添加文字水印涉及到文字渲染和定位,包括选择合适的字体、颜色、透明度、角度以及文字在图片上的位置。在Python中,可以使用PIL库的ImageDraw模块绘制文字;在JavaScript中,可以利用HTML5的Canvas API实现...
我们需要一个Graphics对象来在图片上添加文字水印。 5. **DrawString方法**:这是Graphics类的一个重要方法,用于在指定位置绘制文本。我们可以设置字体、颜色、旋转角度、透明度等属性,以实现不同效果的水印。 6...
使用VS2017中的VB.NET语言来扩展TextBox控件实现水印文字提示效果,光标离开出现光标定位消失。按照设置属性(水印文字WaterText、水印颜色WaterColor和水印字体WaterFont——建立消息机制(重写WndProc方法)——...
在C# WinForm中,实现文字水印主要涉及System.Drawing命名空间中的类,如Graphics、Font、SolidBrush等。以下是一些关键步骤: 1. **创建Graphics对象**:这是绘制的基础,可以从PictureBox或Bitmap对象中获取。...
同时,为界面添加文字水印也是提高用户体验和保护版权的一种方式。本资源"安卓头像制作图片圆角剪裁相关-Android中实现界面布局文字水印已封装可复用.rar"提供了一个已经封装好的解决方案,可以方便地在其他项目中...
在图像取证中,脆弱水印通常被嵌入到图像的敏感区域,如人脸、文字等,以便在后期检测时能准确判断这些关键区域是否被修改。 篡改定位是图像取证中的核心任务。通过对图像进行分析,我们可以识别出哪些部分是原始的...
- 计算水印文本的实际尺寸,以便正确定位。 - 对水印文本进行变形处理(通过`Transform`对象),使得水印呈现倾斜效果,增加视觉吸引力。 - 设置水印颜色为半透明的灰色,以减少对图片内容的干扰。 - 使用`...
水印是一种在图像中嵌入不可见或微弱可见信息的技术,可以是文字、图案或者数字水印。它旨在保护图像的原创性,防止未经授权的使用,同时也可用来传递额外的信息,如作者身份、日期等。水印分为可见水印和不可见水印...
标题"水印:嵌入图像和文字水印"意味着我们将探讨如何在图像上添加两种类型的水印:图像水印和文字水印。图像水印通常是公司的Logo或个人头像,而文字水印则可能是版权信息或标语。 在C#中,我们可以使用System....