Thursday, 1 November 2012

Membuat tumbnail pada Delphi


Saya ingin tanya nich, gimana caranya melakukan konversi dari bmp dari segala ukuran ( misalnya : 100 x 50 pixel atau 600 x 300 pixel ) ke bentuk mini (spt thumbnail) ? 

Jawaban
Caranya kelihatannya bisa bermacam-macam. Ini saya coba berikan salah
satu cara yang sederhana.


procedure CreateThumbnail(SrcBmp, DestBmp: TBitmap;
ProportionalResize: Boolean);
var
  PropWidth, PropHeight: Integer;
begin
  if ProportionalResize then
 begin
  // mencari ukuran TxL yang proporsional
  if SrcBmp.Width/DestBmp.Width < SrcBmp.Height/DestBmp.Height
  then
  begin
     PropWidth := SrcBmp.Width;
     
PropHeight := PropWidth * DestBmp.Height div      DestBmp.Width;
  end else
  begin
     PropHeight := SrcBmp.Height;
     
PropWidth := PropHeight * DestBmp.Width div DestBmp.Height;
  end;

 end else
 begin
     PropWidth := SrcBmp.Width;
     PropHeight := SrcBmp.Height;
end;

// dibawah ini kalau nggak mau ber-WinAPI, bisa pakai
// method TCanvas.StretchDraw(), tentunya dengan parameter
// yang berbeda

if not StretchBlt(DestBmp.Canvas.Handle, 0, 0,
DestBmp.Width, DestBmp.Height,
SrcBmp.Canvas.Handle, 0, 0, PropWidth, PropHeight,
SRCCOPY)
then
RaiseLastWin32Error;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  SrcBmp, DestBmp: TBitmap;
begin
  SrcBmp := TBitmap.Create;
  try
    SrcBmp.LoadFromFile('C:\BigSizeBitmap.bmp');
    DestBmp := TBitmap.Create;
    try
      // dimensi thumbnail
      DestBmp.Width := 16;
      DestBmp.Height := 16;
      CreateThumbnail(SrcBmp, DestBmp, True);
      // misalnya thumbnail dipakai sebagai glyph
      // pada TSpeedButton...
      SpeedButton1.Glyph.Assign(DestBmp);
    finally
      DestBmp.Free;
    end;
  finally
  SrcBmp.Free;
  end;
end;

No comments:

Post a Comment

Install Fortesreport community Delphi 7 dan RX Berlin

Download  Pertama2 kita harus punya file installernya terlebih dahulu, download  https://github.com/fortesinformatica/fortesrepo...