WMF -> JPG dönüşümü ile sistem kaynaklarından FREE etmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

WMF -> JPG dönüşümü ile sistem kaynaklarından FREE etmek

Mesaj gönderen mrmarman »

Selamlar.

- Daha önce bir başlık altında problemimin çözümünü bulduğumu değerlendirdiğimden konuyu kapatmıştım fakat MicroSoft(R) WindowsXP'de bu bug'ını gidermiş. Sistemim WinME ve sorun devam ediyor, bunu geç farkettim. WinME lisansım var XP'nin yok.

- WMF dosya uzantılı resim dosyalarını diğer JPG, BMP dosyalarında ayıran önemli özelliği Vektör bazlı çizimler olduğundan, yeniden boyutlandırıldığında, hesaplamalar yeniden yapıldığından bozulma meydana gelmiyor. 1x1 cm'den 10x10 metre'ye bile büyütseniz dahi bozulma yok. Bu reklamcılar-çiziciler için ideal bir format. :)

- Delphi, C, VisualBasic farketmiyor. GDI Apileri kullanıldığından TMetaFile'e yüklenen WMF dosyalar Free edildiğinde, tümüyle Free olmuyor. Bunu 1,2 değil 100 WMF dosyası sonrası anlayabiliyoruz.

- İçine meraklısına diyerek, Sistem Kaynakları Ölçer fonksiyonunu da eklediğim örnek vereceğim linkten edinebilirsiniz. Aynı linkte 1200 adet WMF dosyasını RAR ile 1.44MB'lik 6 pakete sıkıştırıp ayrıca koydum.

- Program bir klasördeki WMF'leri bir TRichEdit'e listeliyor. Butona bastığınızda da bir döngü ile başına Width ve Height değeri yazılıp bir alt satıra geçiliyor, WMF sayısı bitince işlem sona eriyor.

- Bu işlemler sırasında Hafızadaki değişimi görebilmeniz için normalde Windows Kaynak Ölçer programını kurmanız gerekirdi ve bu herkes tarafından opsiyonel olarak barındığından kurulmamış olması ihtimaline karşı, kendim programa okuma fonksiyonunu dahil ettim.

- Unutmayın ki problem Win98 ve WinME sistemlerinde. Win2000, WinNT veya WinXP'de boşuna denemeyin sorunsuz çalışıyor. Zaten Kaynak Ölçer de sadece Win98 ve WinME'de çalışır. Diğerlerinde %-1 görürsünüz. Neyse konuyu dağıtmadan

Link : http://www.divxtr.org/divxturk/memoryleak.htm

- Merakla cevalarınızı bekliyorum.
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam bunun esas sıkıntısı Windows 9x serisinde gdi ve user kaynaklarının 16 K ile sınırlı olmasından kaynaklanıyor. Resimler gdi kaynaklarını kullanıyorlar. İlk mesajımda da bunun için sormuştum Win9x kullanıp kullanılmadığınızı.

Bildiğim kadarıyla bunun bir çözümü yok. En güzeli ev kullanıcıları haricinde Windows 9x kullanmamak.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

:)

- @Admin, Aynı Microsoft gibi cevap vermişsiniz.. Koyulaştırdığım yer de böyle diyor. :)

- Ama bir yolu olması lazım. Çünkü JPG, BMP ve GIF formatını kullandığımda benzer en ufak bir durum söz konusu değil..

- ACDSee programı bu işi başardığına göre, (tabii manuel olarak okumak dışında) bir çözümü vardır diye değerlendiriyorum.
Microsoft Knowledge Base Article - 257523
----------------------------------------------
BUG: Resource Leak Occurs When You Display WMF Files in a PictureBox
http://support.microsoft.com/default.as ... -us;257523

...
SYMPTOMS
System and Graphical Device Interface (GDI) resources are not freed when you use a PictureBox control in Visual Basic to view multiple Windows MetaFile (WMF) images. Other image formats, such as BMP, JPG, and GIF, do not experience any resource leaks.
CAUSE
The resource leak is actually caused by a problem in the operating system. The operating system fails to destroy brushes that it creates to "play" a metafile image. Therefore, any application that uses the same operating system functionality to draw metafiles will experience the same loss in resources.
RESOLUTION
Currently, there is no known fix for this problem. One potential workaround, however, is to avoid the WMF file format and instead use another picture format, such as BMP, JPG, or GIF.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

... Ayrıca yavaş olmasına karşın...

- DaVinciGraphics Library web sayfası :
http://www.herdsoft.com/catalog/davinci.html

- Bu bir Image nesnesi. WMF dosyalarını MemoryLeak oluşturmaksızın okuyup, JPG olarak kaydedebiliyor. Bu OCX nasıl yapıyorsa bunu tamamen başarmış. Şimdilik Win98-WinME dedect ettiğimde bunu kullanıyorum. WinXP de normal standart yönteme dönüyorum. En azında riski dağıtma metodu işe yarıyor. 8)
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

haklısın hocam biraz Microsoftvari bir cevap oldu :lol: Geçen etkinlikte biri söyledi, MS Office bu Windows'lardan birinde çalışırken problem çıkartıyormuş. MS'un cevabı : "Win9x serisi ev kullanıcıları için dizayn edildi, Office programı ise ofisler için. 2000 veya XP'ye terfi edin :) "

Belki bir yolu vardır ama hiç araştırmadım şimdiye kadar. Belki diğer üyelerden bu işlerle uğraşan vardır.

Kolay gelsin.
name
Kıdemli Üye
Mesajlar: 243
Kayıt: 09 Ağu 2003 02:11
Konum: İstanbul

Mesaj gönderen name »

Nasıl kullanıldığını bilmiyorum ama "borland memory manager" kullanabilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@name
Selam.

- Cevap yazdığın için öncelikler teşekkür ederim. Her filre açık olduğumu her zaman yineliyorum.

Kaynak : http://www.objectworks.com/email_newsle ... e_two.html
The borlndmm.dll file is the interface to the Borland memory manager, which allocates and releases memory for all string types that are passed back and forth between an application and a DLL.
... şeklinde bir açıklamada da görüldüğü gibi bu işlemler GDI (Graphics Device Interface veya Graphic Display Interface) dışındaki işlemler (Programlar / Paketler / DLL<->Program) yani veri /parametre aktarimi sırasındaki bir problem ile ilgili.

- İlginize tekrar teşerkkür ederim.
Resim
Resim ....Resim
Cevapla