カメラで撮影した画像をリサイズしてアップロードしたい
こんにちは。
monacaとニフティモバイルバックエンドを使ってアプリを作っています。
フォトギャラリーを表示するアプリとそれを管理するアプリを作っています。
別の方が管理するアプリ側の画像をアップロードする部分を書いていたのですが、
数MBあるスマホの画像をそのままアップロードするのでフォトギャラリー側での表示時に
とても時間がかかり実用的ではありません。。
アップロードする前に画像の比率はそのままにリサイズしてアップロードできれば、、と思っています。
その他にも良い案があればご教授いただけると幸いです。
以下がアップロードしているコードの一部です。
よろしくお願い致します。
// 画像選択・カメラ起動
$scope.showDialog = function(val) {
if (val == 0) {
// 画像を選択して取得
var opt = {
quality: 50,
encodingType: Camera.EncodingType.JPEG,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY
};
} else {
// 画像をカメラで撮って取得
var opt = {
quality: 50,
encodingType: Camera.EncodingType.JPEG,
destinationType: Camera.DestinationType.DATA_URL,
sourceType: Camera.PictureSourceType.CAMERA
};
}
navigator.camera.getPicture(onSuccess, onFail, opt);
};
function onSuccess(data) {
$scope.img64 = data;
document.getElementById('new_img').src = 'data:image/jpeg;base64,' + data;
}
function onFail() {
// エラー
}
// 追加
$scope.add = function() {
if (document.getElementById('new_img').src != "images/no-image.png") {
var file = toBlob($scope.img64);
var fileNam = ImgBaseNam + no + ".jpg";
var ncmbFile = new NCMB.File(fileNam, file);
ncmbFile.save().then(function() {
// アップロード成功
var Obj = NCMB.Object.extend(imgClassNam);
var obj = new Obj();
var Today = new Date().toLocaleDateString();
obj.save(null, {
success: function(obj) {
alert("データを保存しました。");
},
error: function(obj, error) {
alert("データを保存に失敗しました。, error code: " + error.message);
}
});
}, function(error) {
// アップロード失敗
alert(error.message);
});
}
};