10 Mart 2015 Salı

Asp.NET C# ile Web Kameradan Resmi Jpeg Olarak Alma (Flash Nesnesi Kullanarak)

Bu konuda bir çok örnek uygulama var net üzerinde benim baktığım örneklere göre en basit olarak aşağıdaki şekilde yapabildim. Önce Flash dosyamızı hazırlamamız gerekiyor. Bunu için Adobe firmasının oluşturduğu sınıfları kullanmak zorunda kaldık. Fla dosyamızın bulunduğu yere sınıfların bulunduğu klasörleri eklemek gerekiyor. Resmi jpeg kodlama yapabilmek biraz teferruatlı iş bunun için hazır sınıfları kullandık. http://s3.dosya.tc/server6/dGVWd1/VeriKaynaklari.rar.html Linkini tıklayarak fla dosyası ve gerekli sınıfları indirebilirsiniz.
Fla Dosyası için oluşan 700X340 sahne oluşturduk.Sahneye bir küçük resim alıpgoruntu adında bir movie klip haline getirdik. Sahnede ilk frame içine aşağıdaki kodları yazdık.
//goruntu almak için gerekli sınıfları import ediyoruz
import flash.display.Bitmap; import flash.display.BitmapData;
//aşağıdaki sınıflar için fla dosyanızın yanında com dizini olması lazım yoksa derleme hata verir.
import com.adobe.images.JPGEncoder; import com.dynamicflash.util.Base64;
//webcamden görüntüyü alabilmek için değişkenlerimizi tanımlıyoruz.
var kamera:Camera=Camera.getCamera();
//aldığımız görüntüyü izleyebilmek için değişkenimizi tanımlıyor ve boyutlarını belirliyoruz.
var video:Video=new Video(280,200);
//webcamden aldığımız görüntüyü videoya aktarıyoruz.
video.attachCamera(kamera);
//videonun x ve y konumunu belirliyoruz
video.x=60; video.y=20;
//videoyu sahneye ekliyoruz
addChild(video);
//Bitmap ve BitmapData sınıfını kullanarak video görüntüsünün //bir kopyasını alıyoruz ve konumunu belirliyoruz.
var bitmapData:BitmapData=new BitmapData(video.width,video.height);
var bitmap:Bitmap=new Bitmap(bitmapData); bitmap.x=360; bitmap.y=20;addChild(bitmap);
goruntu_mc.buttonMode=true;
goruntu_mc.addEventListener(MouseEvent.CLICK,goruntuYakala);
//butona tıklandığında bitmapDatayı kullanarak alınan resmi videonun yan tarafına çizdiriyoruz.
function goruntuYakala(e:MouseEvent):void {
//videodan çekilen görüntüyü sahneye ekledik
bitmapData.draw(video);
//bitmap türündeki resim verisini yukarıdaki sınıfı kullanarak jpeg kodlama işlemi yapıyoruz.
var myEncoder:JPGEncoder = new JPGEncoder(100);
var byteArray:ByteArray = myEncoder.encode(bitmapData);
var base64Bytes:String = Base64.encodeByteArray(byteArray);
var vars:URLVariables = new URLVariables();
vars.imageData = base64Bytes;
//oluşan jpeg kodlu veriyi post olarak web sayfasına gönderdik
var saveJPG:URLRequest = new URLRequest(“resimal.aspx”);
saveJPG.data = vars;
saveJPG.method = URLRequestMethod.POST;
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(saveJPG);
}
Yukarıdaki linkten bu kodları hazır olarak indirebilirsiniz. Fla dosyasını derledikten sonra oluşan swf dosyasını web sayfaları ile aynı yere kopyalacağız. Yeni bir web site oluşturun. Oluşan web sayfasında image isimli bir klasör oluşturun. İki adet web sayfası (Default.aspx ve resimal.aspx)oluşturun. İndirdiğiniz Rarlı dosyayıda buraya açın ve fladosyasını derleyin. Oluşan swf dosyasını web sayfaları ile aynı yere taşıyın.
kameradanresimal1
  • Default.aspx sayfasının içeriği;
<body> <form id=”form1″ runat=”server”> <div> </div> </form> </body> bu sayfada yazılı herhangi bir kod yok. zaten asp.net sayfasıda olmasına gerek yok herhangi bir html sayfasında olabilir.
  • resimal.aspx Sayfasının herhangi bir nesne oluşturmadan kod kısmına geçelim.
  • resimal.aspx.cs sayfasının içeriği;
using System.IO; //dosya işlemleri için namespace eklemeyi unutmayın.
protected void Page_Load(object sender, EventArgs e)
{
ResimKaydet();
}
void ResimKaydet()
{
try
{ string ResimVeriAl = Request.Form[“imageData”]; //Flashtan gelen resim verisini al
byte[] photo = Convert.FromBase64String(ResimVeriAl);
FileStream fs = new FileStream(Server.MapPath(“image/Webcam.jpg”), FileMode.OpenOrCreate, FileAccess.Write);//Veriyi dosyaya yaz
BinaryWriter br = new BinaryWriter(fs);
br.Write(photo);
br.Flush();
br.Close();
fs.Close();
}
catch (Exception Ex)
{
}
}
  • Programdan Kareler;
kameradanresimal2Flash player kamerayı kullanmak için izin ister verin.kameradanresimal3goruntu_mc nesnemize tıklayın.kameradanresimal4  tıkladığınız anın fotosu image/Webcam.jpg olarak kayıt olacaktır. Resim ters olması konuyla ilgili değil ama merak edenler için pc ters değil kamera sürücüsü 64 bit işletim sisteminde bu şekilde çalışıyor, çok da uğraşmadım düzeltmek için bu şekilde de işimi görüyor. Benim bulduğum en basit çözüm bu.

Hiç yorum yok :

Yorum Gönder