Arsip: D2009 Cut Picture JPEG format

 
user image
more 15 years ago

artemisfowl

kakak2 yg udah berpengalaman di delphi mohon bantuannya.. Saya pake Delphi 2009, dah support JPG/JPEG n PNG kan ya.. :D Saya mau tanya, untuk file selain BMP, saya mau pindahin bagian dari picture dari TImage(Image1) ke TImage(Image2) yang lain. Contoh saya load picture JPEG(800x600) ke Image1, saya ingin tampilin(cut) 25% picture(400x300), yaitu bagian kiri atas untuk di tampilin di Image2.. Saya udah coba cari di Google, yang ketemu nya harus di convert ke BMP dulu :( Semoga kakak2 bisa membantu.. :D
user image
more 15 years ago

madi

Mungkin begini yak..:d

//This is how we can crop image by dragging mouse over the image
//This example needs Image (TImage) and Button (TButton)
//Drag your mouse over Image1 then click Button1
 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
var
  PDown             : TPoint;
  PActually         : TPoint;
  MouseIsDown       : Boolean;
 
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PDown := Point(x, y);
  PActually := Point(x, y);
  MouseIsDown := TRUE;
  Image1.Canvas.DrawFocusRect(Rect(x, y, x, y));
end;
 
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if MouseIsDown then
  begin
    Image1.Canvas.DrawFocusRect(Rect(PDown.x, PDown.y, PActually.x,PActually.y));
    PActually := Point(x, y);
    Image1.Canvas.DrawFocusRect(Rect(PDown.x, PDown.y, x, y));
  end;
end;
 
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Image1.Canvas.DrawFocusRect(Rect(PDown.x, PDown.y, PActually.x, PActually.y));
  Image1.Canvas.DrawFocusRect(Rect(PDown.x, PDown.y, x, y));
  PActually := Point(x, y);
  MouseIsDown := FALSE;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  TmpBmp            : TBitmap;
begin
  Image1.Canvas.DrawFocusRect(Rect(PDown.x, PDown.y, PActually.x, PActually.y));
  TmpBmp := TBitmap.Create;
  with TmpBmp do
  try
    Width := Round(abs(PActually.x - PDown.x));
    Height := Round(abs(PActually.y - PDown.y));
    BitBlt(Canvas.Handle, 0, 0, Width, Height, Image1.Canvas.Handle, PDown.x,
      PDown.y, SRCCOPY);
    Image1.AutoSize := TRUE;
    Image1.Picture.Bitmap.Assign(TmpBmp);
  finally
    Free;
  end;
end;
 
end.
user image
more 15 years ago

madi

atau pake yg ini :d

procedure crop(bmp:TBitmap; dist:byte);
var  bmpCrop:       TBitmap;
begin
  if dist2>=bmp.Width then
    exit;
  if dist 2>=bmp.Height then
    exit;
  bmpCrop:=TBitmap.Create;
  try
     bmpCrop.Assign(bmp);
     bmpCrop.Canvas.CopyRect(Rect(0, 0, bmp.Width-2dist, bmp.Height-2 dist), bmpCrop.Canvas, Rect(dist, dist, bmp.Width-dist, bmp.Height-dist));
     bmpCrop.Width:=bmp.Width-2dist;
     bmpCrop.Height:=bmp.Height-2 dist;
     bmp.Assign(bmpCrop);
  finally
     bmpCrop.Free;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  crop(Image1.Picture.Bitmap, 5);
end;
user image
more 15 years ago

artemisfowl

Eh.. kalau yang pake Rectangle gitu bukannya untuk Bitmap ya :?: (tolong koreksi kalau salah..) Wah kak Madi, aku dah coba dua-dua nya ga bisa tuh, udah di coba belum coding nya ? untuk yg pertama, hanya bisa BMP, keluar rectangle nya tapi ga ngambil bagian yang ter-select rectangle. untuk yang kedua juga ga bisa.. Maaf nih kalau ada yg salah, maklum baru belajar dasar Delphi.. Apa caranya harus baca pixel ? kemudian pixel itu di copy terus taruh di container picture ? tapi kalau gitu bakal lama yak :lol: Lagi pula masih belum ngerti caranya... mohon bantuannya :)
user image
more 15 years ago

pebbie

pakai draw aja.. kan bisa langsung ke TGraphic..
user image
more 15 years ago

artemisfowl

Kalau gitu saya pelajari dulu.. Kalau ada saran lainnya tolong post aja di sini.. makasih ya :)
user image
more 15 years ago

artemisfowl

ada yg bisa kasih contoh coding sederhananya ga TGraphic - Draw, masih agak bingung nih..
user image
more 15 years ago

pebbie


uses jpeg;
....
Image1.Picture.LoadFromFile('somefile.jpg');
...
bmp := TBitmap.Create;
bmp.Width := w;
bmp.Height := h;
bmp.Canvas.Draw(-x, -y, Image1.Picture.Graphic);//menggambar somefile.jpg, crop dari koordinat 5,5 sepanjang wxh pixel.. 
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com