bmp resmi formda açmadan kesme uygulamak?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

bmp resmi formda açmadan kesme uygulamak?

Mesaj gönderen forumsad »

arkadaşlar bmp resmi forma ekleyip kesme işlemi yapmak ile ilğili örnekler var ama
forma açmadan kesip kestiğimiz parçayı formda göstermemiz mümkün mü?

teşekkürler..
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: bmp resmi formda açmadan kesme uygulamak?

Mesaj gönderen mkysoft »

runtimeda nesneleri yaratıp, kesme işleminden sonra ekranda görürnen nesneye aktarılabilir sanırım.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: bmp resmi formda açmadan kesme uygulamak?

Mesaj gönderen mrmarman »

Bu isteğini gigapixel projemde uygulamıştım. Büyük ölçek ve boyutlu resimleri parçalara ayırarak bağımsız dosyalar halinde adresleyip sadece bakılan yöndeki resim parçalarını ekrana yansıtarak çok hızlı görüntüleme / haritalama üzerine kullanıyorum. Resmi yüklemeden işlem yapmak demek direkt dosya üzerinde filestream bazlı çalışma yapmak demektir.

Resim dosyanın boyutu konusunda sıkıntı yoksa @mkysoft 'un da altını çizdiği şekilde ekrandan gizlediğin bir TIMage nesnesine resmi alıp, üzerinde bölme yapıp sonra kullanmayı denersen ar-ge konusunda zamandan kazanısın. Eğer benim yaptığım gibi yapmak istersen öncelikle BMP dosya formatı hakkındaki temel yapısal bilgileri etüd etmelisin.
Resim
Resim ....Resim
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: bmp resmi formda açmadan kesme uygulamak?

Mesaj gönderen forumsad »

teşekkürler arkadaşlar
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: bmp resmi formda açmadan kesme uygulamak?

Mesaj gönderen orhancc »

http://www.simdesign.nl/nativejpg.html
http://www.efg2.com/Lab/Graphics/VeryLargeBitmap.htm
http://jpegclub.org/jpegtran/

Örnek olabilecek bir kod

Kod: Tümünü seç

procedure GetBitmapTile(BM: TBitmap; Y, X: Integer);
var JpegImage: TJpegImage;
begin
  JpegImage := NIL; // Replace with tile lookup //
  BM.PixelFormat := pf32bit;
  BM.Width := JpegImage.Width;
  BM.Height := JpegImage.Height;
  BM.Canvas.Draw(0, 0, JpegImage);
end;

procedure WriteBitmapFile(TileCountY, TileCountX: Integer; BM_Stm: TStream);
var
  BM: TBitmap;
  TileY: Integer;
  TileX: Integer;
  PixelY: Integer;
begin
  BM := TBitmap.Create;
  for TileY := 0 to TileCountY-1 do
    for TileX := 0 to TileCountX-1 do
    begin
      GetBitmapTile(BM, TileY, TileX);
      for PixelY := 0 to 511 do
        BM_Stm.Write(BM.ScanLine[PixelY]^, 512 * SizeOf(TRGBQuad));
    end;
    BM.Free;
end;

Cevapla