Windows 8 uygulamasında seçilen resmin hakim rEmrei bulma

09 Haziran 2015

Uygulamalarımızda sıklıkla resimler kullanırız ve bir resimde hakim olan (en çok kullanılan) rengi bulmak ve uygulama içerisinde kullanabilmek çok faydalı olabilir.

Resmi hafızaya yükledikten sonra pixel pixel üzerinde gezip her pixel‘in değerlerini toplayıp ve ortalamasını alarak hakim rengi bulabiliriz. Fakat aşağıda kodlarını paylaşacağım yöntem ile bu işi çok daha hızlı ve az hafıza gerektiren bir şekilde gerçekleştirebiliriz.

Öncelikle hakim rEmrei bulacağımız resim dosyasını StorageFile sınıfının GetFileFromApplicationUriAsync() methodunu kullanarak bir değişkene alıyoruz;

var file = await StorageFile.GetFileFromApplicationUriAsync(imageUri);</pre>

Şimdi dosyayı açacak, BitmapDecoder nesnesi oluşturacak, resim dosyasını GetPixelDataAsync() methodunu kullanarak 1x1 boyuta boyutlandıracak, 1x1 boyutlu yeni resmin renk değerini okuyacağız;

using (var stream = await file.OpenAsync(FileAccessMode.Read))
{
    var decoder = await BitmapDecoder.CreateAsync(stream);

    var transform = new BitmapTransform { ScaledHeight = 1, ScaledWidth = 1 };

    var pixels = await decoder.GetPixelDataAsync(
            BitmapPixelFormat.Rgba8,
            BitmapAlphaMode.Ignore,
            transform,
            ExifOrientationMode.IgnoreExifOrientation,
            ColorManagementMode.DoNotColorManage);

    var bytes = pixels.DetachPixelData();

    var dominantColor = Color.FromArgb(255, bytes[0], bytes[1], bytes[2]);
}


Örnek resim ile kullandığımızda aşağıdaki sonucu elde etmeliyiz;

![](/assets/uploads/2015/06/dominant-color.png)

*Kaynak : #WinRT : how to easily get the dominant color of a picture*

İlgili diğer makaleler

blog comments powered by Disqus

Emre Ozcan hakkında

Sistem Yöneticisi, Bilişim Teknoloji Takipçisi

#microsoft #VoIP

Kategoriler

İstatistik

Makale Adedi: 290

Creative Commons Lisansı