Image ve Kullandığı Hafıza

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Image ve Kullandığı Hafıza

Mesaj gönderen Hashirama »

Merhaba
Forma örneğin 9925x7017 boyutlarında bir resim atılıp derlendiğinde çok fazla hafıza kullanıyor. (Resim olmadan kullanılan hafıza : 1.6 k, resimden sonra 210 k) Forma 10 dan fazla da böyle resim yüklediğimizde de doğal olarak bilgisayar programı açmada zorlanıyor. Bu kullanılan hafızayı azaltmanın bir yolu var mıdır ?
Teşekkürler.
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Re: Image ve Kullandığı Hafıza

Mesaj gönderen Commandx »

Form üzerine 1 adte Timage nesnesi koyun
Belirttiğiniz işi sanal olarak virtual image nesnesinden create ve free ederek
gerçi bunun iyi tarafı virtualimage.free edildiğinde bmp.bmp interrupt kullanımından da kalkıyor
anlamı Resim forma yüklendikten sonra virtualimaj işi bitince bu nesne yok ediliyor, böylece disk üzerindeki o bmp resmi silebilirsinde değiştirebilirsinde

Kod: Tümünü seç

var
virtualimaj: TBitmap; 
begin
virtualimaj := TBitmap.Create;
virtualimaj.LoadFromFile('d:\bmp.bmp'); // buraya opendialog dosya yolunuda yazabilirsiniz
imaj.Picture.Bitmap.Assign(virtualimaj);
virtualimaj.Free;
Biraz uğraşarak
form açılışında disk üzerindeki bir BMP dosyadan kaynak okunup virtual olarak image1 nesnesine atama ile oldu bu

Kod: Tümünü seç

//uses jpeg unitini eklemeyi unutmadan

var
bmp : TImage;
jpg : TJpegImage;
begin
if OpenDialog1.Execute then begin
bmp := TImage.Create(nil);
jpg := TJpegImage.Create;
bmp.picture.bitmap.LoadFromFile (opendialog1.FileName ); // Dilerseniz Resmin direkt yolunu string olarak atayabilirsin
jpg.Assign( bmp.picture.bitmap ); 
jpg.CompressionQuality := (5); //---> Bu satır resmin kalitesini belirliyor 0...100 arası değer olabilir
jpg.Compress; //---> Bu satır sıkıştırıyor
jpg.SaveToFile (extractfilepath(application.exename)+'\tmp.jpg' ); 
jpg.Free;
bmp.Free;
image1.Picture.LoadFromFile(extractfilepath(application.exename)+'\tmp.jpg' );
end;
end;
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Hashirama
Üye
Mesajlar: 81
Kayıt: 26 Kas 2013 03:42

Re: Image ve Kullandığı Hafıza

Mesaj gönderen Hashirama »

Teşekkürler cevabınız için ama maalesef kullandığı hafıza gözlegörülür değişme olmadı.
Cevapla