Получение размеров изображения с помощью Javascript File API
Мне требуется создать эскиз изображения в моем веб-приложении. Я использую HTML 5 File API для создания миниатюр.
Я использовал примеры из приведенного ниже URL для создания эскизов.
Http://www.html5rocks.com/en/tutorials/file/dndfiles/
Я успешно могу генерировать миниатюры. Проблема в том, что я могу генерировать миниатюры только с помощью статического размера. Есть ли способ получить размеры файла из выбранный файл, а затем создать объект изображения?
3 ответа:
Да, считайте файл как 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!"); } }