js 按指定大小等比缩放预览图片
2017-04-01 11:40
489 查看
$scope.init = function () {
if (!FileReader) {
utils.showError("您的浏览器不支持HTML5,请使用现代浏览器");
return;
}
///获取文件的浏览路径
var getObjectURL = function (file) {
var url = null;
var blob = new Blob([file], { type: file.type });
if (window.createObjectURL != undefined) { // basic
url = window.createObjectURL(blob);
} else if (window.URL != undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(blob);
} else if (window.webkitURL != undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(blob);
}
return url;
};
var getReviseWH = function (srcWidth, srcHeight) {
var targetWidth = 400;
var targetHeight = 400;
var res = {};
if (srcWidth > targetWidth || srcHeight > targetHeight) {
if (srcWidth > srcHeight) {
var heightFloat = parseFloat(srcHeight) / parseFloat(srcWidth);
heightFloat = heightFloat * targetWidth;
res.height = parseInt(heightFloat);
res.width = targetWidth;
}
else {
var widthFloat = parseFloat(srcWidth) / parseFloat(srcHeight);
widthFloat = widthFloat * targetWidth;
res.width = parseInt(widthFloat);
res.height = targetHeight;
}
}
else {
res = { width: srcWidth, height: srcHeight };
return res;
}
res = getReviseWH(res.width, res.height);
return res;
};
document.getElementById('uploadInput').outerHTML = document.getElementById('uploadInput').outerHTML;
$('#uploadInput').on('change', function () {
if (this.files.length <= 0) return;
var file = this.files[0];
if (file.size > 2048 * 1024) {
utils.showError("请选择大小不超过2M的图片");
return;
}
var reader = new FileReader();
reader.onload = function (e) {
var img = new Image();
img.onload = function () {
var w = img.naturalWidth;
var h = img.naturalHeight;
var wh = getReviseWH(w, h);
var cvs = document.createElement('canvas');
cvs.width = wh.width;
cvs.height = wh.height;
cvs.getContext('2d').drawImage(img, 0, 0, cvs.width, cvs.height);
$scope.imageUri = cvs.toDataURL(file.type, 1);
$scope.$apply();
}
img.src = this.result;
}
reader.readAsDataURL(file);
});
};
$scope.chooseImageFile = function () {
document.getElementById('uploadInput').click();
};
html:
<div class="panel panel-default" style="height:100%;">
<div class="panel-heading">
上传图片
</div>
<div class="panel-body">
<div class="row" ng-bind="test"></div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-3"><button class="btn btn-default" ng-click="chooseImageFile()">选择图片</button></div>
<div class="col-lg-4" style="color:red;" ng-bind="tips"></div>
<div class="col-lg-4" style="color:black;">注:GIF在上传预览无法显示动态,上传后可正常显示</div>
</div>
<div class="row" style="margin-top:10px;">
<div class="col-lg-1">预览</div>
<div class="col-lg-8" style="padding:5px 5px 5px 5px;border:1px solid #c4c4c4;width:410px;height:410px;display:flex;justify-content:center;align-items:center;">
<img ng-src="{{imageUri}}" />
</div>
<div class="col-lg-2" style="display:flex;justify-content:center;align-items:center;">
<button class="btn btn-primary" ng-click="uploadImage()">上传</button>
</div>
</div>
</div>
</div>
<input type="file" name="file" id="uploadInput" style="display:none;" />
<div style="display:none;" ng-init="init()"></div>
if (!FileReader) {
utils.showError("您的浏览器不支持HTML5,请使用现代浏览器");
return;
}
///获取文件的浏览路径
var getObjectURL = function (file) {
var url = null;
var blob = new Blob([file], { type: file.type });
if (window.createObjectURL != undefined) { // basic
url = window.createObjectURL(blob);
} else if (window.URL != undefined) { // mozilla(firefox)
url = window.URL.createObjectURL(blob);
} else if (window.webkitURL != undefined) { // webkit or chrome
url = window.webkitURL.createObjectURL(blob);
}
return url;
};
var getReviseWH = function (srcWidth, srcHeight) {
var targetWidth = 400;
var targetHeight = 400;
var res = {};
if (srcWidth > targetWidth || srcHeight > targetHeight) {
if (srcWidth > srcHeight) {
var heightFloat = parseFloat(srcHeight) / parseFloat(srcWidth);
heightFloat = heightFloat * targetWidth;
res.height = parseInt(heightFloat);
res.width = targetWidth;
}
else {
var widthFloat = parseFloat(srcWidth) / parseFloat(srcHeight);
widthFloat = widthFloat * targetWidth;
res.width = parseInt(widthFloat);
res.height = targetHeight;
}
}
else {
res = { width: srcWidth, height: srcHeight };
return res;
}
res = getReviseWH(res.width, res.height);
return res;
};
document.getElementById('uploadInput').outerHTML = document.getElementById('uploadInput').outerHTML;
$('#uploadInput').on('change', function () {
if (this.files.length <= 0) return;
var file = this.files[0];
if (file.size > 2048 * 1024) {
utils.showError("请选择大小不超过2M的图片");
return;
}
var reader = new FileReader();
reader.onload = function (e) {
var img = new Image();
img.onload = function () {
var w = img.naturalWidth;
var h = img.naturalHeight;
var wh = getReviseWH(w, h);
var cvs = document.createElement('canvas');
cvs.width = wh.width;
cvs.height = wh.height;
cvs.getContext('2d').drawImage(img, 0, 0, cvs.width, cvs.height);
$scope.imageUri = cvs.toDataURL(file.type, 1);
$scope.$apply();
}
img.src = this.result;
}
reader.readAsDataURL(file);
});
};
$scope.chooseImageFile = function () {
document.getElementById('uploadInput').click();
};
html:
<div class="panel panel-default" style="height:100%;">
<div class="panel-heading">
上传图片
</div>
<div class="panel-body">
<div class="row" ng-bind="test"></div>
<div class="row">
<div class="col-lg-1"></div>
<div class="col-lg-3"><button class="btn btn-default" ng-click="chooseImageFile()">选择图片</button></div>
<div class="col-lg-4" style="color:red;" ng-bind="tips"></div>
<div class="col-lg-4" style="color:black;">注:GIF在上传预览无法显示动态,上传后可正常显示</div>
</div>
<div class="row" style="margin-top:10px;">
<div class="col-lg-1">预览</div>
<div class="col-lg-8" style="padding:5px 5px 5px 5px;border:1px solid #c4c4c4;width:410px;height:410px;display:flex;justify-content:center;align-items:center;">
<img ng-src="{{imageUri}}" />
</div>
<div class="col-lg-2" style="display:flex;justify-content:center;align-items:center;">
<button class="btn btn-primary" ng-click="uploadImage()">上传</button>
</div>
</div>
</div>
</div>
<input type="file" name="file" id="uploadInput" style="display:none;" />
<div style="display:none;" ng-init="init()"></div>
相关文章推荐
- php实现按指定大小等比缩放生成上传图片缩略图的方法
- php实现按指定大小等比缩放生成上传图片缩略图的方法
- php按指定大小等比缩放生成上传图片缩略图
- php实现按指定大小等比缩放生成上传图片缩略图的方法
- js 本地图片未上传先预览(等比缩小图片内容大小)
- 将图片缩放成指定大小(压缩方法)
- js进行图片的等比缩放(转自yayayaangel的百度空间)
- 图片上传之前检查大小、尺寸、格式并预览的js代码
- 用ASP.NET将原始图片按照指定大小按原始比例缩放显示图片
- 图片截取并缩放—以任意点为起点截取任意长度并缩放至指定大小算法
- JS 等比缩放图片函数
- php图片缩放代码-按比例缩放或截取指定大小的缩略图 非常好用的一个方法
- 实用技巧:js图片等比缩放
- JS控制图片显示的大小(图片等比例缩放)
- java将图片缩放实现类(能将jpg、bmp、png、gif图片文件,进行等比或非等比的大小转换)
- js图片等比缩放
- JS控制图片显示的大小(图片等比例缩放)
- 一个可以使得上传的图片大小按照指定的宽度,高度自动按比例进行缩放的函数(C#)
- js图片等比缩放
- Js实现图片等比缩放