ローカルでウェブカメラの写真を一時保存
久しぶりにActionScript3.0ネタ載せます.何を隠そう,私のブログは昔のエントリーの「[as3.0] Tweenerクラスの導入」が一番アクセス数があるのです.人に見てもらいたい部分と自分の記録として残したいものが両立しているブログなので,別にいいんですけどね,技術的な方は見てもらいたい部分だし.
今回は,as3.0にてウェブカメラの映像をENTERボタンを押して,シャッターを押す,そうするとその写真が一時的に保存されるといったものです.撮った写真は配列に落とし込み,増えていく仕組みになっています.
参考にさせていただいたサイトは
「ActionScript3.0 png/jpegエンコード – kozy.heteml.jp」
「Flashから画像ファイルを保存する – FICC LABS」
「AIR Beta1でWEBCAMの画像をjpgに保存するサンプル作った – hatayanlog」
「JPEGencoderを使って簡易カメラ作成 – PHP,MySQL,Flexな日々+イラストとか」
「【AS3】ActionScript3.0でFMS使ってライブカメラする|blog.hereticsintheworld」
「trick7.com blog: Flash 上で Bitmap を JPEG 画像に変換」
です.ありがとうございました.今回はたくさんのサイト様を参考にさせていただきました.
上記のサイトさんのほとんどはウェブでも使用できるように,phpと連動して制作しているのですが,私の場合はウェブで使う訳でもなかったので,phpと連動させていません.新サイトでは連動させたものでヘッダーに遊び要素を取り入れたものを作ってみたいですね.asはインタフェースのプロトタイプを制作するのに,必要なので練習練習.
今回,利用したクラスはJPGEncoderというものです.これは,BitmapDataをByte配列に変換してjpg形式にエンコードしてくれるものです.わー便利ー.つまりは8ビットは1ピクセルなので,byteの配列とどんどん落としてこんでいくと何ピクセルでも配列に入れることが可能なわけですね(この表記ってあってますかね)
JPGEncoderはhttp://code.google.com/p/as3corelib/よりダウンロードしてください.色々なファイルが有りますが,私はsrc/comの中身をすべてクラスフォルダの方へコピーしました.たぶん,大切なファイルはsrc/com/adobe/images/の中のJPGEncoder.asだと思います.
作り方を簡単に説明すると,まずウェブカメラの動画を表示させます.そこで,ボタンをクリックすると(シャッターを押すと),Bitmapdataクラス経由でBitmapを表示し,そこにウェブカメラの動画を入れ,その動画をbyte配列に入れます.それを自分で設定した配列に入れていくという流れです.
最初のウェブカメラの動画を表示させるのは,どこかのサイトからのコピペです.どこか忘れました,すみません.
そして,JPGEncoderを使ってByte配列にウェブカメラの画像を入れていきます.
アクションをしてウェブカメラの動画を取り込む部分のソースを載せておきます.
private function upload(event:Event):void {
bmdPerlin = new BitmapData(540, 355, false, 0x00ff0000);
bmp = new Bitmap(bmdPerlin);
bmdPerlin.draw(video);
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var byteArr:ByteArray = jpgEncoder.encode(bmdPerlin);
photodata[pi] = bmp;
pi++;
}
こんな感じです.かなり省きました,すみません.既にこのシステムとほかのシステムを統合してしまっているので,そこだけを抜き出すのが面倒という落ちだけです.
今度は参考にしたサイトの皆様のようにphpと連動して見たいと思います.
PS プロジェクト学習の最終発表は終わりました.まずの反省は声のでかさです.プレゼンテーションベイはただっぴろい+人ざわめきなので声が通りにくいです.ガンバ!
制作したものは,1月7日の授業で実際に使用してもらいます.そこでテストをして改良していきたいと思います.このシステムは現在は使い物になりませんがw、テストを繰り返していけばどんどんと進化すると思います.リフレクションの整理でお困りの先生方いかがでしょうか?このシステムは学生の入力したタグ(キーワード)で絞り込み検索ができます.自分の授業にて学生が何を学んだかを把握できます,更に学生別や年度,授業別にも対応しています.絞り込み方は自分で設定もすることができます!なんて素敵なウェブシステム!

