Tek bir çoklu görüntülü tiff dosyasına birden çok görüntülü tiff dosyasının bir birleşimini yapıyorum ve Image t sınıfından dolayı kaynak tiff dosyalarını silmeyle ilgili bir sorun yaşıyorum Onları tutacak tutmaya devam ediyor.Image.FromFile bir dosyadaki tanıtıcıyı serbest bırakmıyor
Ben Image.FromFile üzerinden bir tiff görüntü okuyorum:
Bitmap resultTiff = (Bitmap) Image.FromFile(strImageFile);
hangi sonra diğer tüm tiff görüntüleri aynı şekilde okumak ve elde tiff görüntü onları ekleyin.
Ben başvuruları serbest bırakmak için ve elde edilen dosyayı kaydetmek için bu kodu kullanın bitince:
ep.Param[0] = new EncoderParameter(enc, (long) EncoderValue.Flush);
resultTiff.SaveAdd(ep);
resultTiff.Dispose();
Şimdi problem dosyaları üzerinde tanıtıcı hala var olduğunu (ve dolayısıyla dosyalar
silinemez edilir)resultTiff.Dispose()
çağrısından sonra
GC.Collect()
'u aramadıkça.
GC'yi arayarak kendimi çok rahat hissetmediğimi düşünebilirsiniz, bunun için başka bir yol var mı?
resultTiff = null;
+1. Image.FromFile, her zaman doğru olanı yapmaz. Bir dosya akışını manuel olarak açarak ve ardından bitmap'i oradan yükleyerek değiştirmek size biraz daha esneklik sağlar. – stakx
Herhangi bir nedenle 'FileStream' hala bana aynı sorunu veriyordu. Bunun yerine, iyi çalıştı olan Image.FromStream (yeni MemoryStream (File.ReadAllBytes (yol))) 'yi kullandım. – William