public static void MakeWaterMark(string ImgServerPath)
{
string WATERMARK_URL = "~/Images/etbs.png"; //水印图片路径
string path = HttpContext.Current.Request.MapPath(ImgServerPath); //处理水印照片
System.Drawing.Image watermark = System.Drawing.Image.FromFile(HttpContext.Current.Request.MapPath(WATERMARK_URL)); //水印图片
System.Drawing.Image Cover = null;
if (System.IO.File.Exists(path))
{
try
{
Cover = System.Drawing.Image.FromFile(path);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(Cover);
g.DrawImage(watermark,
new System.Drawing.Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height),
0, 0, watermark.Width, watermark.Height,
System.Drawing.GraphicsUnit.Pixel);
g.Dispose();
watermark.Dispose();
}
catch (Exception ex)
{
//错误描述:A Graphics object cannot be created from an image that has an indexed pixel
//异常特殊处理
System.Drawing.Graphics graphics;
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
//重新创建一个新图板
System.Drawing.Bitmap newBmp = new System.Drawing.Bitmap(bmp.Width, bmp.Height);
graphics = System.Drawing.Graphics.FromImage(newBmp);
graphics.DrawImage(bmp,
new System.Drawing.Rectangle(0, 0, newBmp.Width, newBmp.Height),
new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height),
System.Drawing.GraphicsUnit.Pixel);
bmp = newBmp;
//画水印
graphics.DrawImage(watermark,
new System.Drawing.Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height),
0, 0, watermark.Width, watermark.Height,
System.Drawing.GraphicsUnit.Pixel);
graphics.Dispose();
watermark.Dispose();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
//网上的例程,通常是 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
//色彩失真明显
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
bmp.Dispose();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/bmp";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.End();
}
}
HttpContext.Current.Request.ContentType = "image/ipeg";
Cover.Save(HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Cover.Dispose();
HttpContext.Current.Response.End();
}
ASP.ENT 生成图片水印
最新推荐文章于 2020-12-31 21:47:13 发布