June, 2015 | Engin Polat'ın Windows, Web, Mobile ve Game içerikli programcılık sitesi

Arşiv

2015 June ayı için arşiv

BNP Paribas (TEB) International Hackathon Etkinliği Haziran 2015

14 June 2015 Yorum yapılmamış

BNP Paribas International Hackathon, TEB tarafından 12 Haziran 2015, 13 Haziran 2015 ve 14 Haziran 2015 tarihlerinde San Francisco, Paris, Brüksel ve Roma ile eş zamanlı olarak İstanbul‘da bulunan TEB Formasyon Merkezi‘nde gerçekleştirildi.

Ben de Microsoft Türkiye Ofisinden sevgili İlke Savaşan ile birlikte Microsoft Azure‘un uygulama geliştiricilere sağladığı kolaylıkları anlatmak ve geliştiricilere teknik yardımlarda bulunmak için etkinlikte görev aldım.

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

09 June 2015 Yorum yapılmamış

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 rengini 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);

Şimdi dosyayı açacak, BitmapDecoder nesnesi oluşturacak, resim dosyasını GetPixelDataAsync() methodunu kullanarak 1×1 boyuta boyutlandıracak, 1×1 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;

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