|
|
게시됨 2015. 9. 10. 오후 11:37:26
|
|
|
|

워터마크는 우리가 이미지를 훔치지 못하도록 하기 위한 것입니다.
워터마크 효과를 구현하는 두 가지 방법
1) 사용자가 업로드할 때 워터마크를 추가할 수 있습니다.
a) 장점: 두 가지 방법에 비해 서버는 사용자가 이 이미지를 읽을 때마다 고객에게 직접 전송합니다.
b) 단점: 원본 사진을 파괴합니다.
2) 글로벌 일반 처리 프로그램을 통해 사용자가 이 이미지를 요청할 때 워터마크를 추가합니다.
a) 이점: 원본 사진이 파괴되지 않음
b) 단점: 사용자가 요청을 할 때마다 요청한 이미지에 워터마크를 찍어야 하므로 서버 자원이 낭비됩니다.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Drawing;
- using System.IO;
- namespace Watermark
- {
- /// <summary>
- /// waterH 的摘要说明
- /// </summary>
- public class waterH : IHttpHandler
- {
- public waterH()
- { }
- private const string WATERMARK_URL = "~/Test/watermark.png";
- private const string DEFAULTIMAGE_URL = "~/Test/watermark.png";
- public void ProcessRequest(HttpContext context)
- {
- System.Drawing.Image Cover;
- if (File.Exists(context.Request.PhysicalPath))
- {
- Cover = Image.FromFile(context.Request.PhysicalPath);
- Image watermark = Image.FromFile(context.Request.MapPath(WATERMARK_URL));
- Graphics g = Graphics.FromImage(Cover);
- g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
- g.Dispose();
- watermark.Dispose();
- }
- else
- {
- Cover = Image.FromFile(context.Request.MapPath(DEFAULTIMAGE_URL));
- }
- context.Response.ContentType = "images/jpeg";
- Cover.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
- Cover.Dispose();
- context.Response.End();
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- }
- }
코드 복사 waterH.ashx의 파일 코드는 다음과 같습니다:
그 다음 web.config에서 다음 노드를 구성해야 합니다:
system.web 노드 아래에서
<httpHandlers> <add verb="*" path="Images/*.jpg" type="Watermark.waterH"/> </httpHandlers> 처음에 제가 설정한 노드들은 다음과 같습니다:
<httpHandlers> <add verb="*" path="Images/*.jpg" type="waterH"/> </httpHandlers> 오류를 보고할 것입니다,
구성 미흡
설명: 요청에 서비스를 제공하기 위해 필요한 프로필을 처리하는 과정에서 오류가 발생했습니다. 아래의 구체적인 오류 세부사항을 확인하고 설정 파일을 적절히 수정해 주시기 바랍니다.
분석기 오류 메시지: "waterH" 유형 로드에 실패함.
출처 오류:
15행: <system.web> 16행<httpHandlers>: 17행: <add verb="*" path="Images/*.jpg" type="waterH"/> 18행: </httpHandlers> 19행: <컴파일 debug="true" targetFramework="4.0" />
마지막으로,프로젝트의 이름이 붙은 waterH!
마지막으로, 소스 코드 사본을 첨부하세요:
Watermark.rar
(234.64 KB, 다운로드 횟수: 0, 售价: 2 粒MB)
|
이전의:360 쿨패드 저우 홍이와 장차오가 서로를 찢어버리는 건가요, 아니면 과대평가인가요?다음:웹사이트 js는 말 위에 매달린 아이디어이고, 외부 전송은 j/c입니다
|