asp.net watermarking code of has been tested

  • 2020-05-10 17:55:57
  • OfStack

The watermark function code is shown below
 
/// <summary> 
///  Image modification class , It is mainly used to protect the copyright of pictures. The copyright belongs to the original author  
/// </summary> 
public class picmark 
{ 
#region "member fields" 
private string modifyImagePath = null; 
private string drawedImagePath = null; 
private int rightSpace; 
private int bottoamSpace; 
private int lucencyPercent = 70; 
private string outPath = null; 
#endregion 
public picmark() 
{ 
} 
#region "propertys" 
/// <summary> 
///  Gets or sets the path to the image to modify  
/// </summary> 
public string ModifyImagePath 
{ 
get { return this.modifyImagePath; } 
set { this.modifyImagePath = value; } 
} 
/// <summary> 
///  Gets or sets the path to the picture in the drawing ( The watermark image ) 
/// </summary> 
public string DrawedImagePath 
{ 
get { return this.drawedImagePath; } 
set { this.drawedImagePath = value; } 
} 
/// <summary> 
///  Gets or sets the watermark in the right margin of the modified image  
/// </summary> 
public int RightSpace 
{ 
get { return this.rightSpace; } 
set { this.rightSpace = value; } 
} 
// Gets or sets the height of the watermark from the bottom of the modified image  
public int BottoamSpace 
{ 
get { return this.bottoamSpace; } 
set { this.bottoamSpace = value; } 
} 
/// <summary> 
///  Gets or sets the opacity of the watermark to be drawn , Note the percentage of transparency of the original image  
/// </summary> 
public int LucencyPercent 
{ 
get { return this.lucencyPercent; } 
set 
{ 
if (value >= 0 && value <= 100) 
this.lucencyPercent = value; 
} 
} 
/// <summary> 
///  Gets or sets the path to the output image  
/// </summary> 
public string OutPath 
{ 
get { return this.outPath; } 
set { this.outPath = value; } 
} 
#endregion 
#region "methods" 
/// <summary> 
///  Start drawing watermark  
/// </summary> 
public void DrawImage() 
{ 
Image modifyImage = null; 
Image drawedImage = null; 
Graphics g = null; 
try 
{ 
// Creating a graphic object  
modifyImage = Image.FromFile(this.ModifyImagePath); 
drawedImage = Image.FromFile(this.DrawedImagePath); 
g = Graphics.FromImage(modifyImage); 
// Gets the coordinates to draw the graph  
int x = modifyImage.Width - this.rightSpace; 
int y = modifyImage.Height - this.BottoamSpace; 
// Set the color matrix  
float[][] matrixItems ={ 
new float[] {1, 0, 0, 0, 0}, 
new float[] {0, 1, 0, 0, 0}, 
new float[] {0, 0, 1, 0, 0}, 
new float[] {0, 0, 0, (float)this.LucencyPercent/100f, 0}, 
new float[] {0, 0, 0, 0, 1}}; 
ColorMatrix colorMatrix = new ColorMatrix(matrixItems); 
ImageAttributes imgAttr = new ImageAttributes(); 
imgAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); 
// Draw a shadow image  
g.DrawImage( 
drawedImage, 
new Rectangle(x, y, drawedImage.Width, drawedImage.Height), 
0, 0, drawedImage.Width, drawedImage.Height, 
GraphicsUnit.Pixel, imgAttr); 
// Save the file  
string[] allowImageType = { ".jpg", ".gif", ".png", ".bmp", ".tiff", ".wmf", ".ico" }; 
FileInfo file = new FileInfo(this.ModifyImagePath); 
ImageFormat imageType = ImageFormat.Gif; 
switch (file.Extension.ToLower()) 
{ 
case ".jpg": 
imageType = ImageFormat.Jpeg; 
break; 
case ".gif": 
imageType = ImageFormat.Gif; 
break; 
case ".png": 
imageType = ImageFormat.Png; 
break; 
case ".bmp": 
imageType = ImageFormat.Bmp; 
break; 
case ".tif": 
imageType = ImageFormat.Tiff; 
break; 
case ".wmf": 
imageType = ImageFormat.Wmf; 
break; 
case ".ico": 
imageType = ImageFormat.Icon; 
break; 
default: 
break; 
} 
MemoryStream ms = new MemoryStream(); 
modifyImage.Save(ms, imageType); 
byte[] imgData = ms.ToArray(); 
modifyImage.Dispose(); 
drawedImage.Dispose(); 
g.Dispose(); 
FileStream fs = null; 
if (this.OutPath == null || this.OutPath == "") 
{ 
File.Delete(this.ModifyImagePath); 
fs = new FileStream(this.ModifyImagePath, FileMode.Create, FileAccess.Write); 
} 
else 
{ 
fs = new FileStream(this.OutPath, FileMode.Create, FileAccess.Write); 
} 
if (fs != null) 
{ 
fs.Write(imgData, 0, imgData.Length); 
fs.Close(); 
} 
} 
finally 
{ 
try 
{ 
drawedImage.Dispose(); 
modifyImage.Dispose(); 
g.Dispose(); 
} 
catch { ;} 
} 
} 
#endregion 
} 

The foreground code is shown below
 
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="demo.WebForm1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:FileUpload ID="FileUpload1" runat="server" /> 
<br /> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 
</div> 
</form> 
</body> 
</html> 

The code for the cs class is shown below
 
protected void Button1_Click(object sender, EventArgs e) 
{ 
string extension = Path.GetExtension(this.FileUpload1.FileName).ToUpper(); 
string fileName = Guid.NewGuid().ToString(); 
string savePath = Server.MapPath("../upfile/" + fileName+ extension); 
if (!Directory.Exists(Path.GetDirectoryName(savePath))) 
{ 
Directory.CreateDirectory(Path.GetDirectoryName(savePath)); 
} 
this.FileUpload1.SaveAs(savePath); 
// Instantiate the class  
picmark wm = new picmark(); 
wm.DrawedImagePath = Server.MapPath("/upfile/" + "backlogo.gif") ; 
wm.ModifyImagePath = savePath; 
wm.RightSpace = 145; 
wm.BottoamSpace =17; 
wm.LucencyPercent = 50; 
wm.OutPath = Server.MapPath("/upfile/" + fileName.Replace("-","").ToUpper() + extension); 
wm.DrawImage(); 
//fileName = "_New_" + fileName; 
//string sPath = Server.MapPath("../upfile/" + fileName + extension); 
//this.FileUpload1.SaveAs(sPath); 
// Save the watermarked image , Delete the original image  
if (File.Exists(savePath)) 
{ 
File.Delete(savePath); 
//File.Delete(wm.OutPath); 
} 

Related articles: