【質問事項】どのような問題ですか?
jsWaffleとEclipseを使ってカメラアプリを作っています。
撮影した画像をCanvasの背景にしたいのですが、コードがわかりません・・・。
ご教授いただけますと幸いです。
【再現方法】サンプルソース、再現手順など
>TODO
【調べた事】ここまで調べてみました
クジラ飛行机さんの本を購入し、CameraDiaryの項目を参考に制作しています。
【jsWaffleバージョン】確認したjsWaffleバージョン
>TODO
【Androidのバージョン】確認したAndroidバージョン
> Android OS 3.0
【機種名】
> OPTIMUSPAD L-06C
【その他】
質問ありがとうございます。
抜粋ですみませんが、以下のような感じでどうでしょうか?
===========================================
<canvas id="a_canvas"></canvas>
...
var canvas = $("a_canvas");
context = canvas.getContext("2d");
var fname = "/sdcard/temp.jpeg";
// カメラ起動
droid.startIntentForResult(
"camera:" + fname,
function(code){
if (code == 0) return; // キャンセルされたら何もしない
// 撮影が完了した
drawToCanvas(fname);
}
);
// キャンバスにJPEGファイルを描画する
function drawToCanvas(fname) {
var image = new Image();
image.onload = function () { // 画像が読み込まれたタイミングで...
context.drawImage(image, 0, 0); // キャンバスに描画
};
image.src = fname; // 画像ファイルの読込み
}
===========================================
キャンバスへの描画は、
書籍で言えば、「タッチパズルを作ってみよう」などが参考になると思います。
お忙しい中、早速のお返事ありがとうございます!
本当に助かりました。
また分からないことがありましたらご教授お願い致します。
先日はご教授いただきありがとうございました。
教えていただいたコードを参考に作ってみましたが、カメラ起動→撮影→[OK]すると強制終了されてしまい、canvasに画像が配置されません。
var fname = "/sdcard/temp.jpeg";
とすると、設置したボタンを押下してもカメラ起動せずでした。
現在落ち着いているコードは以下の通りです。
ここから強制終了されないようにするにはどうしたらいいのかご教授いただけますと幸いです。
var canvas = $("a_canvas");
var context = canvas.getContext("2d");
var savedir = "/data/canvasdata/";
droid.mkdir(savedir);
var disp = droid.getDisplayInfo();
a_canvas.width = disp.width;
a_canvas.height = disp.height;
function takePicture() { // 写真を撮影する
// ファイル名を決める
var d = new Date();
var savedir = savedir + (d.getFullYear()) + "-" +
(d.getMonth()+1) + "-" + (d.getDate()) + "_" +
(d.getHours() + "-" + (d.getMinutes())) + "-" +
(d.getSeconds()) + ".jpeg";
// カメラ起動
droid.startIntentForResult(
"camera:" + savedir,
function(code){
if (code == 0) return; //キャンセルされたら何もしない
// 撮影が完了した
drawToCanvas(savedir);
}
);
}
//キャンバスにJPEGファイルを描画する
function drawToCanvas(savedir) {
var image = new Image();
image.onload = function () { // 画像が読み込まれたタイミングで...
context.drawImage(image, 0, 0); // キャンバスに描画
};
image.src = savedir; // 画像ファイルの読込み
}
//キャンセルボタンを押下したら画面クリア
function ImgClr () {
context.clearRect(0,0, canvas.width, canvas.height);
}
// 保存処理
function saveData(){
var saveData = droid.snapshotToFile(savedir);
alert("保存しました");
}
それと、基本的な質問なのですが、使用しているタブレットでは
droid.setMenuItemは設置しても表示されないのでしょうか?
ガイドブック315頁を参照してデバックしましたが、menuボタンすら表示されません。