C#

C# Resim Boyutlarını Öğrenme

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda bir resmin boyutlarını öğrenmeyi anlatacağım. Hadi başlayalım !

System.Drawing Kütüphanesi ve FileStream Sınıfı

Bildiğiniz üzere resim boyutları genişlik ve yükseklikten oluşmakta ve bu genişlik ile yükseklik değerleri pixel bazındadır. C# gibi bir dilde de resim boyutlarını öğrenmenin yolu elbette var. Bunun için resmi C# ile açacak ve boyutlarına bakacağız. Bir resmi C# ile açmak için o resmi System.Drawing kütüphanesi altında bulunan Image sınıfıyla yapacağız. Image sınıfını kullanabilmek için yeni bir nesnesini türetmeye gerek yok, altında bulunan statik tipteki FromStream() fonksiyonunu kullanacağız. Bu fonksiyon parametre olarak bir tane FileStream nesnesi istiyor. FileStream ise C#’ta dosyalar üzerinde işlem yapabilmek için kullandığımız sınıf. Yani resmi öncelikle FileStream sınıfı ile açacağız, sonrasında Image sınıfına dolduracağız. FileStream sınıfını kullanabilmek için yeni bir nesnesini türetmemiz gerekiyor. Yeni bir nesnesini de constructor metodunu kullanarak yapabiliriz ve constructor metodu string tipte dosyanın yolunu ve dosya modu olmak üzere 2 tane parametre istiyor. Dosya modundan kastım, işletim sistemi FileStream sınıfı üzerinden bu dosyaya erişecek ama ne yapacak, onun belirlenmesidir ve FileMode enum nesnesi olması gerekmektedir. Örneğin masaüstünde bulunan resim.png dosyasını kullanarak yeni bir FileStream nesnesi türetelim ve ardından bu nesneyi kullanarak Image.FromStream() fonksiyonunu çağıralım.

FileStream fs = new FileStream("c:/users/kullanici/desktop/resim.png", FileMode.Open);
Image image = Image.FromStream(fs);

Resim Boyutlarını Öğrenme

Şimdi sıra geldi resmin boyutlarını öğrenmeye. Resmin boyutları genişlik ve yükseklik olarak iki parçadan oluşuyor dedik ya, bu yöntemle resmin boyutlarını alırken yükseklik ve genişliği ayrı ayrı alacağız ve bunları image nesnesi altındaki Width ve Height propertyleri ile yapacağız. Width genişlik, Height yükseklik değerini bize verecek ve her ikisi de integer tipte. Tek bir property erişimi olacağı için doğrudan kullanıcıya resmin boyutlarını söylerken kullanabiliriz.

Console.WriteLine("Resmin Genişliği: " + img.Width + "px, Yüksekliği: " + img.Height + "px");

FileStream ve Image Sınıflarının Bellekten Temizlenmesi

Evet resmin boyutlarını bulduk ve kullanıcıya gösterdik. Hem FileStream, hemde Image sınıfları bellekte saklandıkları ve bağlı oldukları dosyaları açıp kilitledikleri için bu nesneleri kapatmamız, yani bellekte serbest bırakmamız gerekiyor. Kapatmamamız halinde özellikle FileStream nesnesi masaüstündeki resim.png dosyasını kilitlediği için bu dosyayı hem biz kullanamayacağız, hemde aynı dosyayı farklı bir FileStream ile kullanmak istediğimizde o FileStream nesnesi kullanamayacaktır. Bunun önüne geçmek için FileStream nesnesini kapatıp bellekte serbest bırakıyoruz ve oda kilitlediği dosyanın kilidini açarak serbest bırakıyor ve diğer kullanıcıların o dosyaya erişebilmesine izin veriyor. Kapatma işlemini hem FileStream hemde Image nesnesi altındaki Dispose() fonksiyonu ile yapacağız ve bu fonksiyonlar void tipte olduğu için geriye herhangi birşey döndürmüyor.

image.Dispose();
fs.Dispose();

Tüm Kodlar

Evet C# ile bir resmin boyutlarını öğrenme bu şekilde yapılmakta. Yazdığımız kodları daha toplu olması için aşağıya bırakıyorum.

FileStream fs = new FileStream("c:/users/kullanici/desktop/resim.png", FileMode.Open);
Image image = Image.FromStream(fs);
Console.WriteLine("Resmin Genişliği: " + img.Width + "px, Yüksekliği: " + img.Height + "px");
image.Dispose();
fs.Dispose();

Tüm C# yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu