ASP.NET实现图片自动添加水印主要需要通过以下几个步骤实现:
- 在ASP.NET网站中选择一种服务器端语言,例如C#或者VB.NET,这里以C#为例。
- 引入System.Drawing和System.Drawing.Imaging两个命名空间,这两个命名空间提供了图像处理所需的基本类库。
- 通过Bitmap类读取原图,并将文本用Graphics类的DrawString方法绘制在读取的图片上。
- 将处理后的图片保存到服务器或者输出给客户端。
以下是两个示例说明:
示例1:使用ASP.NET自动生成带有文本水印的图片
在ASP.NET页面代码中,首先引入System.Drawing和System.Drawing.Imaging两个命名空间:
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
然后在服务器端的C#代码中实现对图片的处理:
//获取原图
Bitmap bmp = new Bitmap(Server.MapPath("~/images/test.jpg"));
//设置水印文本
string waterText = "Test Watermark Text";
//设置水印字体、颜色等
Font font = new Font("微软雅黑", 24);
SolidBrush brush = new SolidBrush(Color.FromArgb(128, 255, 255, 255));
PointF pointF = new PointF(30, 30);
//设置水印透明度
float alpha = 0.5f;
//创建与原图相同大小的画布,并将原图绘制到画布上
Bitmap newBmp = new Bitmap(bmp.Width, bmp.Height);
Graphics g = Graphics.FromImage(newBmp);
g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
//将水印文本绘制到画布上
g.DrawString(waterText, font, brush, pointF);
//设置水印透明度
ImageAttributes attributes = new ImageAttributes();
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.Matrix33 = alpha;
attributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
//将画布保存为图片文件
newBmp.Save(Server.MapPath("~/images/test_watermarked.jpg"), ImageFormat.Jpeg);
以上代码实现了用指定文本生成水印,并将水印图像另存为新文件的功能。
示例2:使用ASP.NET实现在线图片添加水印功能
在ASP.NET页面代码中,需要编写一个ASPxImage按钮,让用户上传要处理的图片。在页面中加入以下代码:
<asp:FileUpload ID="fileUpload" runat="server" />
<client-side-events onfileuploadcomplete="OnFileUploadComplete" />
<dx:ASPxImage ID="image" runat="server" Visible="False">
</dx:ASPxImage>
然后,编写客户端JS代码,实现图片上传和水印处理功能:
function OnFileUploadComplete(s, e) {
var file = e.callbackData;
var image = document.getElementById('<%= image.ClientID %>');
image.SetImageUrl(file);
var bmp = new Bitmap(file);
var g = Graphics.FromImage(bmp);
var font = new Font("微软雅黑", 24);
var brush = new SolidBrush(Color.FromArgb(128, 255, 255, 255));
var pointF = new PointF(30, 30);
var waterText = "Test Watermark Text";
g.DrawString(waterText, font, brush, pointF);
var ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Jpeg);
var base64Data = btoa(String.fromCharCode.apply(null, new Uint8Array(ms.getBuffer())));
image.SetImageUrl("data:image/jpeg;base64," + base64Data);
}
以上代码使得用户可以上传图片,并实时显示水印效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET实现图片自动添加水印 - Python技术站