AIR Beta2でWEBCAMの画像をjpgに保存するサンプル
AIR beta1でWEBCAMの画像をjpgに保存するサンプル作った - hatayanlogをBeta2に対応させてみた。
保存できたjpgファイル
具体的に直したのはFileクラスを使う部分と設定ファイル部分。
証明書の概念がはじめて出てきたのでそこに注意した。
具体的には、Flile.resolve()というメソッド名がFile.resolvePath()というメソッド名に変更されたのでその部分を修正。
//f = f.resolve(fileName);Beta1
f = f.resolvePath(fileName);//Beta2
Beta2ではデジタル署名が加わったので設定ファイルを新しく作成した。
今回からAIRファイルを書き出すためにはデジタル署名が必要になった。デジタル署名を設定しないとAIRIファイルという中間形式ファイルにパッケージされ後でデジタル署名が必要になる形式になる。
FlashCS3からのデジタル署名の方法はFlashCS3上のメニューの"コマンド"から"AIR- Application and Installer Settings"をクリック
Digital signatureのChangeを選択
Sign the AIR with a digital certificateの Createを選択
Create Self-Signed Digital Certificate内で自分の情報、パスワード、証明ファイルの保存先を指定して保存することで作れる。
これを作って、使うと無事AIRファイルが書き出せるようになる。
前回とほとんど一緒だけれども以下今回のFlaファイルのソースコード
/*
WEBCAMで静止画を撮るとディスクトップにtest.jpgが保存されるSample
flashCS3 + AIR Bata2
flashplayer9
Create Date: 2007/11/03
Author: Hirotaka Hatayama
WebSite: http://www.hatayan.org
*/
/*air class*/
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
/*adobe core class*/
import com.adobe.images.JPGEncoder;
/*クラスファイル*/
var video:Video;
var photo_bm:Bitmap;
var photo_bd:BitmapData;
var fileName:String;
/*コンストラクタ*/
/*ステージのスケール方法を設定*/
//No_SCALEモード
stage.scaleMode=StageScaleMode.NO_SCALE;
/*ステージの揃えの決定*/
//左に合わせる
stage.align=StageAlign.TOP_LEFT;
//ボタンの設定
setShotBtn();
setSaveBtn();
//webcamの設定
initCamera();
//photoの設定
initPhoto();
function myTrace(param:Object):void {
myTrace_textArea.text=param+"\n"+myTrace_textArea.text;
}
//-----------------------------------------------------------------//
//webcamの設定
//-----------------------------------------------------------------//
function initCamera():void {
/*接続されたWEBCAMの処理*/
//接続されたWEBCAMをcameraに関連付ける
var camera:Camera=Camera.getCamera();
//きちんとカメラが接続されていたら
if (camera != null) {
//WEBCAMの解像度とFPSを設定
camera.setMode(320,240,30,true);
//videoオブジェクトをカメラのサイズに合わせて初期化
video=new Video(camera.width,camera.height);
//カメラをvideoオブジェクトに関連付ける
video.attachCamera(camera);
//addChildでステージにvideoを配置
addChild(video);
video.x=0;
} else {
//カメラがないときのエラー表示
myTrace("カメラを接続してください。");
}
}
//-----------------------------------------------------------------//
//右側の画面の設定
//-----------------------------------------------------------------//
function initPhoto() {
photo_bd = new BitmapData(320, 240, false, 0x00CCCCCC);
photo_bm = new Bitmap(photo_bd);
photo_bm.x = 320;
photo_bm.y = 0;
addChild(photo_bm);
}
//-----------------------------------------------------------------//
//ShotBtnの設定
//-----------------------------------------------------------------//
function setShotBtn():void {
btnShot.addEventListener(MouseEvent.CLICK, shot);
}
function shot(event:Event):void {
photo_bd.draw(video);
}
//-----------------------------------------------------------------//
//SaveBtnの設定
//-----------------------------------------------------------------//
function setSaveBtn():void {
btnSave.addEventListener(MouseEvent.CLICK, save);
}
function save(event:Event):void {
btnSave.enabled = false;
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var byteArr:ByteArray = jpgEncoder.encode(photo_bd);
myTrace(saveToJpegFile("test.jpg",byteArr));
btnSave.enabled = true;
}
function saveToJpegFile(fileName:String,byteArr:ByteArray):String {
var str:String;
try {
var f:File = File.desktopDirectory;
f =f.resolvePath(fileName);
var fs:FileStream = new FileStream();
fs.open(f,FileMode.UPDATE);
fs.writeBytes(byteArr, 0, byteArr.length);
fs.close();
str="photo saved";
} catch (e:Error) {
str=e.message;
}
return str;
}
ソースのダウンロード※デジタル署名ファイルは添付されていません。上記を参考にしてつくってください。
トラックバック(0)
このブログ記事を参照しているブログ一覧: AIR Beta2でWEBCAMの画像をjpgに保存するサンプル
このブログ記事に対するトラックバックURL: http://www.hatayan.org/mt/mt-tb.cgi/555







コメントする