첨부파일을 참조에 추가해서 사용하면 되며 사용 샘플 코드는 아래와 같다.

 

투명화 범위를 웹 컬러 포멧(#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;

        }


+ Recent posts