첨부파일을 참조에 추가해서 사용하면 되며 사용 샘플 코드는 아래와 같다.
투명화 범위를 웹 컬러 포멧(#efefef 형태) 으로 지정할 수 있으며 처리 결과물의 경로를 지정할 수 있다.
결과물은 png 형태로 저장한다.
도장이나 개인 사인등의 배경을 투명화 처리하는데 사용할 수 있다.
그레이 스케일 이미지의 경우 범위 지정을 좀 더 섬세히 하면 깔끔한 결과물을 얻을 수 있다.
결과 예제
원본 이미지 :
결과 이미지 :
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 SSICOM_GDI_PLUS;
namespace gdiplus_exam
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string sOrgPath = @"c:\\ssssss.bmp"; //원본 파일경로
string sTargetPath = @"e:\"; //결과물 저장폴더
SSICOM_GDI_PLUS.IMAGE_CONVERT sic = new IMAGE_CONVERT();
/// <param name="sFileName">원본 파일명</param>
/// <param name="sColorStr">투명화 비교 시작 값 (web color format)</param>
/// <param name="eColorStr">투명화 비교 종료 값 (web color format)</param>
/// <param name="sTargetPath">결과물 저장폴더(png 확장자를 가진 원본파일이름)</param>
// #aaaaaa 부터 #ffffff 까지 영역의 색상을 투명화 처리 한다.
string sConvertedimagePath = sic.fctConvertToTransparent(sOrgPath, "#aaaaaa", "#ffffff", sTargetPath);
Response.Write("<img src='" + sOrgPath + "'>");
Response.Write("<img src='" + sConvertedimagePath + "'>");
}
}
}
처리 메소드 소스
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
상기 3개의 네임 스페이스를 추가하여야 한다.
/// <summary>
/// 특정 컬러를 투명화 처리한다.
/// </summary>
/// <param name="sFileName">원본 파일명</param>
/// <param name="sColorStr">투명화 색상 범위 시작 값 (web color format)</param>
/// <param name="eColorStr">투명화 색상 범위 종료 값 (web color format)</param>
/// <param name="sTargetPath">결과물 저장폴더(png 확장자를 가진 원본파일이름)</param>
/// <returns></returns>
public string fctConvertToTransparent(string sFileName, string sColorStr, string eColorStr, string sTargetPath)
{
// html 포멧 컬러일 경우 #이 선행되어야 한다.
if (!sColorStr.StartsWith("#"))
sColorStr = "#" + sColorStr;
if (!eColorStr.StartsWith("#"))
eColorStr = "#" + eColorStr;
// 색상 정보를 컬러 오브젝트로 선언
Color sColor = ColorTranslator.FromHtml(sColorStr);
Color eColor = ColorTranslator.FromHtml(eColorStr);
FileInfo fi = new FileInfo(sFileName);
System.Drawing.Color tmpColor;
// 결과물 경로용
string sResultFile = string.Empty;
// 원본 파일을 읽어 비트맵을 생성
using (System.Drawing.Bitmap BaseBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile(sFileName))
{
// 결과물을 생성하기 위한 비트맵
using (System.Drawing.Bitmap NewBitMap = new System.Drawing.Bitmap(BaseBitmap.Width, BaseBitmap.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
// BaseBitmap 을 픽셀단위로 읽으면서 해당 픽셀의 색 정보가 지정한 색상 범위에 속하는 경우라면
// 투명 색상으로 지정한다. 그게 아니라면 원래 색상을 그대로 유지한다.
// 이런 형태로 NewBitMap 의 동일한 좌표에 점을 찍는 형태로 구현되었다.
for (int x = 0; x < BaseBitmap.Width; x++)
{
for (int y = 0; y < BaseBitmap.Height; y++)
{
// 특정 픽셀의 색상 정보를 갖고온다.
tmpColor = BaseBitmap.GetPixel(x, y);
if (!
(
((tmpColor.R >= sColor.R) && (tmpColor.R <= eColor.R)) &&
((tmpColor.G >= sColor.G) && (tmpColor.G <= eColor.G)) &&
((tmpColor.B >= sColor.B) && (tmpColor.B <= eColor.B))
)
)
{
NewBitMap.SetPixel(x, y, tmpColor);
}
}
}
sResultFile = sTargetPath + fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) + DateTime.Now.Ticks.ToString() + ".png";
NewBitMap.Save(sResultFile, System.Drawing.Imaging.ImageFormat.Png);
}
}
fi = null;
return sResultFile;
}
[출처] c# / asp.net 에서 이미지 투명화 처리 방법|작성자 씨콤
'Programming > ASP.NET' 카테고리의 다른 글
[스크랩] Javascript 로 UpdatePanel 핸들링 하기 (0) | 2010.06.10 |
---|---|
[스크랩] 개인화주소 구현 (0) | 2010.06.07 |
[스크랩] ASP.NET에서의 Session 핸들링을 알아보자. (0) | 2010.05.19 |
[스크랩] 계층적 데이터 바인딩 (0) | 2010.05.13 |
[스크랩] 쿠키나 세션을 이용해서 조회수 중복 증가 방지 (0) | 2010.05.12 |
ASP.NET JavaScript 에서 C# 함수호출하기 - PageMethod (0) | 2010.05.11 |
[스크랩] 페이지 수명주기 단계 (0) | 2010.05.04 |
[스크랩] ASP.NET 보안. (0) | 2010.05.04 |
[스크랩] ASP.NET에서 전역 변수를 사용 현재 접속자 리스트 구현 (0) | 2010.05.03 |
[스크랩] ASP.NET 인프라스트럭처(Global.asax,카운터 작성) (0) | 2010.05.03 |