<!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"> <table cellpadding="4" cellspacing="3"> <tr> <td> Images: </td> <td> <asp:FileUpload ID="mainImg" runat="server" /> </td> <td> </td> </tr> <tr> <td> Watermark - Text: </td> <td> <asp:TextBox ID="txtWater" runat="server"></asp:TextBox> </td> <td> </td> </tr> <tr> <td> Watermark - Images: </td> <td> <asp:FileUpload ID="waterImg" runat="server" /> </td> <td> </td> </tr> </table> <br /> <asp:Button ID="Button1" runat="server" Text="Uplaod Image" OnClick="Button1_Click" /> <br /> <asp:Image ID="Image1" runat="server" /> </form> </body> </html> ///////////////////////////////////////////////////////////////////////////////////// using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Drawing.Imaging; using System.Drawing; using System.Drawing.Drawing2D; public partial class test3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string mainImageName = ""; string waterImageName = ""; string waterFullPath = ""; if (mainImg.HasFile) { //uplaod main image mainImageName = Path.GetFileName(mainImg.PostedFile.FileName); mainImg.PostedFile.SaveAs(Server.MapPath("upload/") + mainImageName); if (waterImg.HasFile) { //upload watermark image waterImageName = Path.GetFileName(waterImg.PostedFile.FileName); waterImg.PostedFile.SaveAs(Server.MapPath("upload/") + waterImageName); waterFullPath = Server.MapPath("upload/") + waterImageName; } ImageSetting(txtWater.Text, waterFullPath, Server.MapPath("upload/") + mainImageName, 450, 120); Image1.ImageUrl = "upload/" + mainImageName.Insert(mainImageName.LastIndexOf("."), "_new"); } } public void ImageSetting(string wmText, string wmImage, string mainImage, int xPosition, int yPosition) { byte[] imageBytes = null; if (File.Exists(mainImage)) { System.Drawing.Image image = System.Drawing.Image.FromFile(mainImage); Graphics graphic; if (image.PixelFormat != PixelFormat.Indexed && image.PixelFormat != PixelFormat.Format8bppIndexed && image.PixelFormat != PixelFormat.Format4bppIndexed && image.PixelFormat != PixelFormat.Format1bppIndexed) { // Graphic is not a Indexed (GIF) image graphic = Graphics.FromImage(image); } else { /* Cannot create a graphics object from an indexed (GIF) image. * So we're going to copy the image into a new bitmap so * we can work with it. */ Bitmap indexedImage = new Bitmap(image); graphic = Graphics.FromImage(indexedImage); // Draw the contents of the original bitmap onto the new bitmap. graphic.DrawImage(image, 0, 0, image.Width, image.Height); image = indexedImage; } graphic.SmoothingMode = SmoothingMode.AntiAlias & SmoothingMode.HighQuality; //Text Watermark properties Font myFont = new Font("Arial", 25, FontStyle.Bold); SolidBrush brush = new SolidBrush(Color.FromArgb(70, Color.White)); SizeF textSize = new SizeF(); if (wmText != "") textSize = graphic.MeasureString(wmText, myFont); //Image Watermark System.Drawing.Image ig = null; if (wmImage != "") ig = System.Drawing.Image.FromFile(wmImage); // Write the text watermark and image watermark across the main image. PointF pointF = new PointF(xPosition, yPosition); if (wmText != "") { graphic.DrawString(wmText, myFont, brush, pointF); xPosition += Convert.ToInt32(textSize.Width); } if (wmImage != "") { graphic.DrawImage(ig, pointF); xPosition += Convert.ToInt32(ig.Width); } if (wmText != "") yPosition += Convert.ToInt32(textSize.Height); if (wmImage != "") yPosition += Convert.ToInt32(ig.Height); using (MemoryStream memoryStream = new MemoryStream()) { // save image in memoryStream with it format which get it from GetImageFormat function image.Save(memoryStream, GetImageFormat(mainImage)); imageBytes = memoryStream.ToArray(); } graphic.Dispose(); } MemoryStream ms = new MemoryStream(imageBytes); System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms); //save new image and rename it; returnImage.Save(mainImage.Insert(mainImage.LastIndexOf("."), "_new")); ms.Dispose(); returnImage.Dispose(); } //function to return Image Format ImageFormat GetImageFormat(String path) { switch (Path.GetExtension(path).ToLower()) { case ".bmp": return ImageFormat.Bmp; case ".gif": return ImageFormat.Gif; case ".jpg": return ImageFormat.Jpeg; case ".png": return ImageFormat.Png; default: return null; } } } |
public class GenericConverter { public static T Parse<T>(string sourceValue) where T : IConvertible { return (T)Convert.ChangeType(sourceValue, typeof(T)); } public static T Parse<T>(string sourceValue, IFormatProvider provider) where T : IConvertible { return (T)Convert.ChangeType(sourceValue, typeof(T), provider); } } public static class TConverter { public static T ChangeType<T>(object value) { return (T)ChangeType(typeof(T), value); } public static object ChangeType(Type t, object value) { TypeConverter tc = TypeDescriptor.GetConverter(t); return tc.ConvertFrom(value); } public static void RegisterTypeConverter<T, TC>() where TC : TypeConverter { TypeDescriptor.AddAttributes(typeof(T), new TypeConverterAttribute(typeof(TC))); } } ----------------
Comments
Post a Comment