Thumbnail 컴포넌트 예제)
먼저 .NET Framework 이 있어야겠죠

다음은 dll 로 만들 C# 소스입니다

//CSWebUtil.cs
using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace CSWebUtil
{
  public class Thumbnail
  {
    private Image SrcImage;
    private String FileName;
    public int Width = 100, Height = 100, ErrorCode = 0;
    public string ErrorMessage = "";
    public Thumbnail(){}
    public void Load(String fileName)
    {
      this.FileName = fileName;
    }
    public void Save(String thumbName)
    {
      try
      {
        this.SrcImage = Image.FromFile(this.FileName, true);
        string type = System.IO.Path.GetExtension(thumbName);
        int sWidth = SrcImage.Width;
        int sHeight = SrcImage.Height;
        if(sWidth > sHeight)
          this.Height = (int) (this.Width * sHeight / sWidth);
        else
          this.Width = (int) (this.Height * sWidth / sHeight);
        using(Image thumb = SrcImage.GetThumbnailImage(this.Width
                       , this.Height
                       ,new Image.GetThumbnailImageAbort(
                               Thumbnail.ThumbnailCallback)
                       , IntPtr.Zero))
        {
          switch(type.ToLower())
          {
            case ".jpg":
              thumb.Save(thumbName, System.Drawing.Imaging.ImageFormat.Jpeg);
              break;
            case ".gif":
              thumb.Save(thumbName, System.Drawing.Imaging.ImageFormat.Gif);
              break;
            case ".png":
              thumb.Save(thumbName, System.Drawing.Imaging.ImageFormat.Png);
              break;
          }
        }
        SrcImage.Dispose();
      }
      catch(Exception ex)
      {
        this.ErrorCode = 1;
        this.ErrorMessage = ex.ToString();
      }
    }
    public static bool ThumbnailCallback()
    {
      return false;
    }
  }
}


위 파일을 임의의 폴더에서 dll 로 컴파일합니다 csc /t:library /out:CSWebUtil.dll CSWebUtil.cs 다음은 COM 으로 내보냅니다 regasm CSWebUtil.dll /codebase 약간의 경고 메시지와 "Types registered successfully" 라는 결과가 나오는 것을 볼 수 있습니다 경고 메시지는 COM으로 내보낸 어셈블리가 사이닝된 "강력한 어셈블리"가 아니므 로 네크워크의 다른 컴퓨터에서 접근할 수 없다는 내용인데요 어차피 로컬에서만 쓸 거니까 무시하셔도 좋습니다 * 만약 /codebase 옵션이 없다면 사용파일과 항상 동일 디렉토리에 있어야 한다 는 제한이 따릅니다 이제 테스트를 해봅니다 먼저 vb WSH 로 ...


dim thumbnail
set thumbnail = WScript.CreateObject("CSWebUtil.Thumbnail")
thumbnail.Load "석양.jpg"
thumbnail.Width = 100
thumbnail.Height = 100
thumbnail.Save "석양1.jpg"

If thumbnail.ErrorCode = 1 Then
  WScript.Echo thumbnail.ErrorMessage
End If
set thumbnail = nothing

위 파일을 thumbtest.vbs 로 저장하시고 테스트해보세요(그냥 더블클릭하시면 됩니다...) 당근 석양.jpg 가 vbs 파일과 동일 디렉토리에 있어야겠죠 asp 에서 사용하시기 위해서는 위 소스에서 WScript.CreateObject 를 Server.CreateObject 로... WScript.Echo 를 Response.Write 로 바꾸시면 됩니다 그냥 asp.net 으로 하면 이럴 필요도 없지만 때로는 기존의 asp 로 만든 갤러리에 썸네일 기능이 필요한 경우도 있습니다 COM 목록에서 삭제하시려면 regasm /u CSWebUtil.dll 하시면 됩니다 수정및 삭제를 위해서는 여타 COM 과 마찬가지로 IIS 중지 이후에 해주세요 아니면 수정시에 "사용중입니다" 라는 오류 메시지를 접하게 되실 겁니다