본문 바로가기

Delphi/C++Builder

TWICImage를 이용해 다양한 이미지 포맷의 파일을 불러오고 저장하기.


TWICImage는 Microsoft Windows Imaging Component를 캡슐화 한 클래스로 다양한 이미지 포맷을 조작할 수 있습니다.


사용법은 아래 샘플코드와 같이 TImage 컨트롤에서 파일을 로드하기 전에 TWICImage로 먼저 로드한 후 TImage에 할당하면 다양한 이미지 포맷을 TWICImage가 처리해 줍니다.

(TWICImage는 RAD Studio 2010 부터 지원합니다.)


procedure TForm2.btnImageLoadClick(Sender: TObject);
var
  wic: TWICImage;
begin
  if OpenDialog1.Execute then
  begin
    wic := TWICImage.Create;
    try
      wic.LoadFromFile(OpenDialog1.FileName);
      Image1.Picture.Assign(wic);
    finally
      wic.Free;
    end;
  end;
end;

procedure TForm2.btnImageSaveClick(Sender: TObject);
var
  wic: TWICImage;
  filter: string;
  filename: string;
begin
  wic := TWICImage.Create;
  try
    wic.Assign(Image1.Picture);

    case wic.ImageFormat of
    wifBmp:
      begin
        filter := '비트맵(*.bmp)|*.bmp';
        Filename := 'image.bmp';
      end;
    wifPng:
      begin
        filter := 'PNG(*.png)|*.png';
        Filename := 'image.png';
      end;
    wifJpeg:
      begin
        filter := 'JPEG(*.jpg)|*.jpg';
        Filename := 'image.jpg';
      end;
    wifGif:
      begin
        filter := 'GIF(*.gif)|*.gif';
        Filename := 'image.gif';
      end;
    else
      begin
        ShowMessage('지원하지 않는 이미지 포맷입니다');
        Exit;
      end;
    end;

    SaveDialog1.FileName := filename;
    SaveDialog1.Filter := filter;
    if SaveDialog1.Execute then
    begin
      wic.SaveToFile(SaveDialog1.FileName);
    end;
  finally
    wic.Free;
  end;
end;

다운로드

WICImageSample.zip


문단제목