Başlangıç

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

2 Yorum


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. VeriKaynaklari.rar 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ıp goruntu 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 fla dosyası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”>

</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;

kameradanresimal2 Flash player kamerayı kullanmak için izin ister verin. kameradanresimal3 goruntu_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.

Flash As3 ‘de Duman Efekti Oluşturma

Yorum bırakın


  • Öncelikle Photoshop veya Başka bir resim düzenleme programında 40X40 boyutlarında bir *.png dosyası oluşturalım. Arkaplan şeffaf olsun.
  • dumanDuman.png dosyası isterseniz kullanabilirsiniz.
  • dumanyapimi_1dumanyapimi_2  photoshopta yapılanlar.
  • Sonra Fırça efektlerinden şekildeki gibi bir fırça efekti oluşturalım, oluşan resim üzerine duman benzeri fırça darbeleri oluşturalım. İsterseniz görünürlük ayarlarını düşürerek istediğiniz duman efektinin bir karesini oluşturun.
  • Aşağıdaki gibi bir klasör içinde bir önceki örnekteki gibi dosyaları flashta oluşturun ve kaydedin. Büyük/Küçük Harf ve isimler önenmli.
  • flash_as2_1
  • flash_as2_2 ornek.fla dosyasına Main.as bağlama
  • ornek.fla dosyasının kütüphanesine oluşan duman.png dosyasını ekleyelim. Ekledikten (ctrl+L) sonra sahneye çekin. Arkaplanda beyaz veya başka renk varsa parçalayıp (ctrl+B) kemet aracı ve sihirli değnek araçlarını kullanarak temizleyin. Sonra duman şekli sahnede seçili iken F8 ‘e basın. duman_mc isimli bir Movie Clip ‘e çevirin. Sahneden silin. Sonra şekildeki gibi bağlayın.
  • flash_as2_3duman_mc klibine sağ tuş özellkiler ile duman_mc.as dosyasını bağlama
  • Main .as dosyası içeriği;

package
{

import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.Event;
import duman_mc;
import flash.display.Sprite;

public class Main extends Sprite
{

public function Main() : void
{
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}

private function loop(e:Event) : void
{
var Duman_mcnnesnesi:duman_mc = new duman_mc();
Duman_mcnnesnesi.x = 250;
Duman_mcnnesnesi.y = 250;
stage.addChild(Duman_mcnnesnesi);
}

}

}

  • duman_mc.as dosyası içeriği;

package
{

import flash.display.BlendMode;
import flash.display.MovieClip;
import flash.events.Event;

public class duman_mc extends MovieClip //duman_mc movie klibi için sınıf üretiyoruz
{

public var vx:Number;
public var vy:Number;

public function duman_mc() : void
{//görünürlük, boyut ve konumun rastgele alanlar olmasını sağlıyoruz
alpha = Math.random();
vx = Math.random() – Math.random();
vy = Math.random() * 3 – 5;
scaleX = scaleY = Math.random();
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}

private function loop(e:Event) : void
{
alpha -= 0.01;
y += vy;
x += vx;
scaleX = scaleY += 0.02;

if (alpha < 0)
removeSelf();//görünürlük 0 dan küçük değere düştümü olay bitiyor.
}

private function removeSelf() : void
{
removeEventListener(Event.ENTER_FRAME, loop);
parent.removeChild(this);
}

}

}

Flash As3 ‘de Tüm Kodları Sınıf Dosyaları (*.as) içine yazmak.

1 Yorum


Küçük projelerde kodları zaman çizelgesinde aynı fla dosyası içine yazmak basit ve kolay bir çözüm. Fakat projeler geliştikçe bu kodları ayırmak geliştirici için zorunlu hale geliyor. Şimdi ben bu işe öğrenebildiğim ve araştırdığım kadarıyla Şöyle adım adım yapalım.

  • Bir FLA oluşturma  Dosya> Yeni … Flash Dosyası (ActionScript 3.0) . ornek.fla olarak Istediğiniz yere kaydedin
  • Bir ActionScript dosyası oluşturun Dosya> Yeni … ActionScript Dosya . Main.as FLA ile aynı klasörde kaydet.
  • flash_as_1
  • Main.as dosyası ile ornek.fla Dosyasını birbirine bağlama resimdeki gibi yapın. Sınıf içerisine Main.as dosyasının adını şekildeki gibi uzantı olmadan yazın. (ben dosya adını küçük harfle yazmıştım kodun başlangıcında büyük harf vardı çalışmadı. sonra düzelttim çalıştı.)Yandaki kaleme bastığınızda oluşturduğunuz main.as dosyası açılmalıdır.
  • flash_as_2
  • Main.as dosyasının içine aşağıdaki kodu yazın.

package

{

import flash.display.MovieClip;

public class Main extends MovieClip  //buradaki sınıf ismi dosya ismiyle büyük küçük harf duyarlı olacak şekilde aynı olmak zorundadır.

{

public function Main()

{

//bu alana kodları yazacağız.

}

}

}

  • Aşağıda ilk çalışan örnek;

package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{
public function Main()
{
var sonuc:String = “Merhaba Dünya”;
trace( sonuc );
}
}
}

  • Başka bir genel bir string değişkeninin değeri fonksiyon ile değiştirilmiş Örnek;

package
{
import flash.display.MovieClip;
public class Main extends MovieClip
{

public var sonuc:String;
public function Main()
{  sonuc= = “Merhaba”;
ilkfonksiyon;
trace( sonuc );
}
        public function ilkfonksiyon():void  
{
sonuc= “Güle Güle”;
}
}
}

Bana Silverlight Anlat

meslek lisesi ders notları

Eren ÇOLAK

Yazılım Mühendisi Olmak Yolunda İlerliyor...