ʱ¼ä:2016-02-16 03:06 À´Ô´: ÎÒ°®IT¼¼ÊõÍø ×÷Õß:ØýÃû
»¶ÓÄú·ÃÎÊÎÒ°®IT¼¼ÊõÍø£¬½ñÌìС±àΪÄã·ÖÏíµÄ±à³Ì¼¼ÊõÊÇ£º¡¾C# ¸øÕ¾µãÖ¸¶¨Î»ÖõÄijÖÖ¸ñʽµÄͼƬÌí¼Óˮӡ¡¿£¬ÏÂÃæÊÇÏêϸµÄ½²½â£¡
C# ¸øÕ¾µãÖ¸¶¨Î»ÖõÄijÖÖ¸ñʽµÄͼƬÌí¼Óˮӡ
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
namespace Chen
{
/// <summary>
/// HandlerImageOpener µÄժҪ˵Ã÷
/// </summary>
public class HandlerImageOpener : IHttpHandler
{
public HandlerImageOpener()
{
//
// TODO: ÔÚ´Ë´¦Ìí¼Ó¹¹Ô캯ÊýÂß¼
//
}
private string _path="";
/// <summary>
/// ˮӡͼƬ·¾¶
/// </summary>
public string PngPath
{
get
{
if (_path=="")
{
_path=System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["WatermarkedImagePath"]);
}
return _path;
}
}
/// <summary>
/// ΪͼƬ¼Óˮӡ²¢Ð´Èëµ½Response.OutputStream
/// </summary>
/// <param name="hc">ÉÏÏÂÎĶÔÏó</param>
public void GetNewBitMap(HttpContext hc)
{
// ¼ÓÔØÔͼƬ
//System.Web.HttpContext.Current.Response.Write(System.Drawing.Image.FromFile(hc.Request.PhysicalPath));
//System.Web.HttpContext.Current.Response.End();
Bitmap oldBmp=new Bitmap(System.Drawing.Image.FromFile(hc.Request.PhysicalPath));
int newWidth=oldBmp.Width;
int newHeight=oldBmp.Height;
if (oldBmp !=null)
{
// °ó¶¨»°å
Graphics grap=Graphics.FromImage(oldBmp);
// ¼ÓÔØË®Ó¡Í¼Æ¬
Bitmap bt=new Bitmap(PngPath);
// ˮӡλÖÿØÖÆ
int pH=GetNewPoint(newHeight, bt.Height, true);
int pW=GetNewPoint(newWidth, bt.Width, false);
if (newHeight < pH * 8)
pH=pH / 2;
if (newWidth < pW)
pW=pW / 2 / 2;
int pX=newHeight - pH;
int pY=newWidth - pW - 3;
// Ìí¼Óˮӡ
grap.DrawImage(bt, pY, pX, pW, pH);
// дÈëµ½Êä³öÁ÷
oldBmp.Save(hc.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
// ¿ØÖÆ¿í¸ß
private int GetNewPoint(int oldP, int newP, bool isW)
{
int p=4;
if (isW)
{
p=16;
}
if (oldP < (newP * p))
{
newP /=2;
if (oldP < (newP * p))
{
GetNewPoint(oldP, newP, isW);
}
}
return newP;
}
#region IHttpHandler ³ÉÔ±
bool IHttpHandler.IsReusable
{
get { return true; }
}
void IHttpHandler.ProcessRequest(HttpContext context)
{
GetNewBitMap(context);
}
#endregion
}
}
Éú³É.dllÎļþºóÔÚweb.config ÖÐÅäÖÃ
<!--ˮӡͼƬ·¾¶-->
<appSettings>
<add key="WatermarkedImagePath" value="~/logo.gif"/>
</appSettings>
<!--ÒýÓô¦Àíº¯Êý pathΪÐèÒª¼ÓˮӡͼƬµÄĿ¼-->
<httpHandlers>
<add type="Chen.HandlerImageOpener, Chen" verb="*" path="image/*.jpg,image/*.gif,image/*.png,image/*.bmp" />
</httpHandlers>
¹ØÓÚC# ¸øÕ¾µãÖ¸¶¨Î»ÖõÄijÖÖ¸ñʽµÄͼƬÌí¼ÓˮӡµÄÓû§»¥¶¯ÈçÏ£º
¡¡¡¡Ïà¹ØÎÊÌ⣺
¡¡¡¡´ð£º >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺
¡¡¡¡´ð£º >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺
¡¡¡¡´ð£º >>Ïêϸ
- ¡¾asp¡¿asp.net urlÖØÐ´Ç³Ì¸-net-urlÖØÐ´
- ¡¾DataSet¡¿DataSet¡¢DataTable¡¢DataRowÇø±ðÏê½â
- ¡¾asp¡¿asp.net ¶¯Ì¬Ìí¼Ó¶à¸öÓû§¿Ø¼þ-net-¶¯Ì¬Ìí
- ¡¾ASP¡¿ASP.NETÖÐÄÚÇ¶Ò³Ãæ´úÂëµÄÒ»¸öÎÊÌâ-NET-ÄÚ
- ¡¾As¡¿Asp.netÖеÄÒ³ÃæÂÒÂëµÄÎÊÌâ-sp--pn-ne-et
- ¡¾Ôö¼Ó¼Ç¼¡¿asp.netÖлñÈ¡ÐÂÔö¼Ó¼Ç¼µÄID Access
- ¡¾´´½¨¡¿ASP.NET Web API½Ì³Ì ´´½¨ÓòÄ£Ð͵ķ½·¨Ïê
- ¡¾Asp¡¿Asp.net Ò³Ãæµ÷ÓÃjavascript±äÁ¿µÄÖµ-net-
- ¡¾ASP¡¿ASP.NET 5Éý¼¶ºóÈçºÎɾ³ý¾É°æ±¾µÄDNX-NET5
- ¡¾404Ò³Ãæ¡¿ASP.NETÉèÖÃ404Ò³Ãæ·µ»Ø302HTTP״̬Âë
- ÆÀÂÛÁÐ±í£¨ÍøÓÑÆÀÂÛ½ö¹©ÍøÓѱí´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷±¾Õ¾Í¬ÒâÆä¹Ûµã»ò֤ʵÆäÃèÊö£©
-
