HTML5 アップロード前に画像を事前にサイズ変更する 質問する

HTML5 アップロード前に画像を事前にサイズ変更する 質問する

こちらは麺スクラッチャーです。

HTML5 ローカル ストレージと xhr v2 などがあることを念頭に置いて、この質問に対して、実用的な例を見つけたり、単に「はい」か「いいえ」で答えたりできる人がいないかと考えています。

新しいローカル ストレージ (またはその他) を使用して画像のサイズを事前に設定し、画像のサイズ変更について何も知らないユーザーが 10 MB の画像を Web サイトにドラッグし、新しいローカル ストレージを使用してサイズを変更してから、小さいサイズでアップロードできるようにすることは可能ですか。

Flash、Java アプレット、Active X で実行できることはよくわかっています。問題は、Javascript + Html5 で実行できるかどうかです。

これについての返答をお待ちしております。

とりあえずこれで。

ベストアンサー1

はい、ファイルAPI、その後、画像をキャンバス要素

このMozilla Hacksのブログ投稿プロセスのほとんどを順を追って説明します。参考までに、ブログ投稿から組み立てたソース コードを以下に示します。

// from an input element
var filesToUpload = input.files;
var file = filesToUpload[0];

var img = document.createElement("img");
var reader = new FileReader();  
reader.onload = function(e) {img.src = e.target.result}
reader.readAsDataURL(file);

var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);

var MAX_WIDTH = 800;
var MAX_HEIGHT = 600;
var width = img.width;
var height = img.height;

if (width > height) {
  if (width > MAX_WIDTH) {
    height *= MAX_WIDTH / width;
    width = MAX_WIDTH;
  }
} else {
  if (height > MAX_HEIGHT) {
    width *= MAX_HEIGHT / height;
    height = MAX_HEIGHT;
  }
}
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);

var dataurl = canvas.toDataURL("image/png");

//Post dataurl to the server with AJAX

おすすめ記事