Haz
9

Silverlight 4 ile web kameradan fotoğraf çek

Bugün silverlight ile ilgili bazı yeni bilgiler daha öğrendim. Silverlight aracılığı ile fotoğraf nasıl çekilir die araştırırken karşıma güzel bir örnek çıktı. Şimdi sizlere bunu paylaşayım dedim.

Daha önce yayınlamış olduğum yazımdaki örnekten devam edeceğim. Kameraya nasıl bağlandığımı burada sizlere tekrardan anlatmaya gerek görmüyorum.

Kısa kısa bazı kodları açıklamak gerekirse;

using FluxJpeg.Core;
using FluxJpeg.Core.Encoder;

İlgili görüntüyü resim formatına dönüştürmek için FJCore adlı dll dosyasını projeye dahil ediyorum.

private void Bsavephoto_Click(object sender, RoutedEventArgs e)
 {
 if (this.SaveFileDialog1.ShowDialog().Value)
 {
 using (Stream dstStream = this.SaveFileDialog1.OpenFile())
 {
 SaveSnapshot(dstStream);
 }
 }
 }

 private void SaveSnapshot(Stream dstStream)
 {
 try
 {
 // Encoding The Snapshot
 WriteableBitmap bmp = new WriteableBitmap(this.Rvideo, null);
 EncodeJpeg(bmp, dstStream);
 }
 catch (Exception ex)
 {
 MessageBox.Show(ex.Message, "Error saving snapshot", MessageBoxButton.OK);
 }
 }

 public static void EncodeJpeg(WriteableBitmap bmp, Stream dstStream)
 {
 // Init buffer in FluxJpeg format
 int w = bmp.PixelWidth;
 int h = bmp.PixelHeight;
 int[] p = bmp.Pixels;
 byte[][,] pixelsForJpeg = new byte[3][,]; // RGB colors
 pixelsForJpeg[0] = new byte[w, h];
 pixelsForJpeg[1] = new byte[w, h];
 pixelsForJpeg[2] = new byte[w, h];

 // Copy WriteableBitmap data into buffer for FluxJpeg
 int i = 0;
 for (int y = 0; y < h; y++)
 {
 for (int x = 0; x < w; x++)
 {
 int color = p[i++];
 pixelsForJpeg[0][x, y] = (byte)(color >> 16); // R
 pixelsForJpeg[1][x, y] = (byte)(color >> 8);  // G
 pixelsForJpeg[2][x, y] = (byte)(color);       // B
 }
 }
 //Encode Image as JPEG
 var jpegImage = new FluxJpeg.Core.Image(new ColorModel { colorspace = ColorSpace.RGB }, pixelsForJpeg);
 var encoder = new JpegEncoder(jpegImage, 95, dstStream);
 encoder.Encode();
 }

Fotoğraf çek adlı butona basıldığı zaman Bsavephoto_Click fonsiyonunu çağırıyorum. Burada dosya kaydedici ekranının açılmasını sağlıyorum.

İlgili resmin adını girdikten sonra SaveSnapshot() fonsiyonu ile ilgili görüntüyü resim formatına dönüştürüp kullanıcının kaydetmesine olanak sağlıyoruz.

Umarım işinize yarar.

Çalışır haldeki örnek proje :

Örnek projeyi indirmek için tıklayın.

Kaynak : http://kodierer.blogspot.com/2009/11/convert-encode-and-decode-silverlight.html

Yorum Yapın

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Bağlantılar

Arşivler