Q&A

  • 조각난 이미지 한 이미지로 통합 기능 알려주세요?
안녕하세요.

10개의 이미지를 하나의 이미지 파일로 만들려고 합니다.

10개의 이미지를 순차적으로 위에서 아래쪽으로 붙이기 할려고 하는데...

그 함수나 예제를 올려 주세요.
.
.
.
Image1.Canvas.Draw(0, IHeight, ImageTemp.Picture.Graphic);
사용하니 작은 이미지는 정상인데,
이미지가 큰 사이즈는 저장공간이 부족에러납니다.
..


사용한 예제를 보완 수정 부탁 드립니다.

procedure TFormMain.BitBtn1Click(Sender: TObject);
var
   i, IHeight: integer;
   IFileName, Iname: string;
   ImageTemp: TImage;
   ImageBitmap: TBitmap;
   DestRect, SrcRect: TRect;
begin
//사용자가 열기버튼을 크릭하면
  ImageFileName := '';
  if OpenPictureDialog1.Execute then
  //오픈대화상자가 실행되면
  begin
    ImageFileName := OpenPictureDialog1.FileName;
    //SaveStyles프로시져를 호출한다.
    if BitBtn5.Caption = 'ILM &Original' then
    begin
       Image1.Picture.LoadFromFile(ImageFileName);
    end else begin
       ImageBitmap := TBitmap.Create;
       IHeight := 0;
       for i := 1 to 10 do
       begin
          Iname := copy(ExtractFileName(ImageFileName), 1, Pos('.', ExtractFileName(ImageFileName)) - 1);
          IFileName := midstr( ImageFileName, 1, Length(ImageFileName) - 14) + Format('\slice\%s%3.3d-1.jpg',[Iname, i]);
          if FileExists(IFileName) then begin
             ImageTemp := TImage.Create(nil);
             ImageTemp.Picture.LoadFromFile(IFileName);
             Image1.Picture.Assign(ImageTemp.Picture);
             ShowMessage('d');
             ImageBitmap.Width := ImageTemp.Picture.Width;
             ImageBitmap.Height := IHeight + ImageTemp.Picture.Height;
//             ImageBitmap.
//             DestRect := Rect(0, 0, ImageBitmap.Width, ImageBitmap.Height);
//             SrcRect := Rect(0, 0, ImageTemp.Width, ImageTemp.Height);
//             ImageBitmap.Canvas.BrushCopy(DestRect, ImageTemp.Picture.Bitmap, DestRect, clBlack);
//             ImageBitmap.Canvas.CopyRect(SrcRect, ImageTemp.Canvas, DestRect);
//             ShowMessage(Format('%d X %d ==> %d X %d',[ImageTemp.Picture.Width, ImageTemp.Picture.Height, ImageBitmap.Width, ImageBitmap.Height]));
             ImageBitmap.Assign(ImageTemp.Picture.Bitmap);
             ImageTemp.Free;
             IHeight := ImageBitmap.Height;
          end;
       end;
       Image1.Picture.Assign(ImageBitmap);
       ImageBitmap.Free;
    end;
    StatusBar1.Panels[0].Text := Format('%d X %d', [Image1.Width, Image1.Height]);
    StatusBar1.Panels[1].Text := ImageFileName;
  end;
end;
0  COMMENTS