C# İle Resim Kapasitesini Ayarlama

C# Image Nesnesinin Boyutunu Ayarlama ve Asp.NET FileUpload İle Seçilen Resmin Boyutunu Küçültme başlıklı yazılarımda C# ile bir resim boyutlarının nasıl ayarlandığına farklı yöntem ve açılardan değinmiştik.Biliyoruz ki, bir resmin boyutları ne kadar küçülürse, kapasiteside orantılı olarak küçülecek aksi halde aynı mantıkla büyüyecektir.Bu yazımızda bir resmin boyutlarını hiç değiştirmeden kapasitesini ayarlamayı inceleyeceğiz.

Elimde aşağıdaki gibi bir kapasite özelliklerine sahip resim bulunmaktadır.
ResimKapasitesiDüşürme
Bu resmin boyutlarıyla oynayarak kapasitesini orantılı ayarlayabiliriz ancak bizim amacımız boyut ayarlarına dokunmadan kapasite ayarı çekmek.
O halde aşağıdaki gibi bir sınıf yazmamız gerekmektedir.

    class KapasiteAyarlayici
    {
        private static ImageCodecInfo TipBilgisi(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }

        public static void KapasiteDusur(Image Resim)
        {
            Bitmap myBitmap;
            ImageCodecInfo myImageCodecInfo;
            System.Drawing.Imaging.Encoder myEncoder;
            EncoderParameter myEncoderParameter;
            EncoderParameters myEncoderParameters;

            myBitmap = new Bitmap(Resim);

            myImageCodecInfo = TipBilgisi("image/jpeg");

            myEncoder = System.Drawing.Imaging.Encoder.Quality;

            myEncoderParameters = new EncoderParameters(1);

            // 1L - 100L arasında bir değer ile kapasite ayarını gerçekleştiriyoruz.
            myEncoderParameter = new EncoderParameter(myEncoder, 1L);

            myEncoderParameters.Param[0] = myEncoderParameter;
            myBitmap.Save("Kayıt Edilecek Dizin", myImageCodecInfo, myEncoderParameters);
        }
    }

Yukarıdaki kod bloğunu incelerseniz eğer, hangi formattaki resimle çalışacaksak “TipBilgisi” isimli metodumuz o formatın Enum karşılığını getirmektedir.Daha sonra 1L – 100L arasında verilen bir değere göre resmin kapasitesi ayarlanmakta ve istenilen dizine kayıt işlemi gerçekleşmektedir.

Bu işleme tabi tutulan resmin kapasite boyutundaki değişikliği görmek için aşağıdaki resmi inceleyiniz.
ResimKapasitesiDüşürme2

Resmin ilk boyutuyla son boyutunu karşılaştırırsanız eğer bu algoritma sonucu ne kadar kapasite farkı olduğunu görebileceksiniz.Lakin bir kaç husustan bahsetmeninde faydası var.
Bu algoritma en performanslı olarak “.jpg”, “.jpeg” formatındaki resim dosyalarında çalışmaktadır.
Resim dosyasının kapasitesi değiştikçe boyut sabit kalacaktır lakin kapasiteye doğru orantılı olarak çözünürlükte artıp azalacaktır.

Bu durumları göz önüne alıp bu algoritmayı kullanmanızı tavsiye ederim.
İyi çalışmalar dilerim..

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. Mustafa dedi ki:

    png ve diğer gormatlar için ne yapmamız gerekiyor ?

Bir cevap yazın

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

*

Copy Protected by Chetan's WP-Copyprotect.