Webアプリケーションで画像のサムネイルを生成する必要があります。 Html 5 File APIを使用してサムネイルを生成します。
下のURLの例を使用して、サムネイルを生成しました。
http://www.html5rocks.com/en/tutorials/file/dndfiles/
サムネイルを正常に生成できました。私が抱えている問題は、静的なサイズを使用することによってのみサムネイルを生成できることです。選択したファイルからファイルのサイズを取得して、Imageオブジェクトを作成する方法はありますか?
はい、ファイルをデータURLとして読み取り、そのデータURLをsrc
のImage
に渡します。 http://jsfiddle.net/pimvdb/eD2Ez/2/ 。
var fr = new FileReader;
fr.onload = function() { // file is loaded
var img = new Image;
img.onload = function() {
alert(img.width); // image is loaded; sizes are available
};
img.src = fr.result; // is the data URL because called with readAsDataURL
};
fr.readAsDataURL(this.files[0]); // I'm using a <input type="file"> for demonstrating
または、オブジェクトURLを使用します: http://jsfiddle.net/8C4UB/
var url = URL.createObjectURL(this.files[0]);
var img = new Image;
img.onload = function() {
alert(img.width);
};
img.src = url;
私のプロジェクトでは、一般的な目的のためにpimvdbの回答を関数でラップしています。
function checkImageSize(image, minW, minH, maxW, maxH, cbOK, cbKO){
//check whether browser fully supports all File API
if (window.File && window.FileReader && window.FileList && window.Blob) {
var fr = new FileReader;
fr.onload = function() { // file is loaded
var img = new Image;
img.onload = function() { // image is loaded; sizes are available
if(img.width < minW || img.height < minH || img.width > maxW || img.height > maxH){
cbKO();
}else{
cbOK();
}
};
img.src = fr.result; // is the data URL because called with readAsDataURL
};
fr.readAsDataURL(image.files[0]);
}else{
alert("Please upgrade your browser, because your current browser lacks some new features we need!");
}
}