使用javascript调整图像大小
我正在使用javascript函数输入图像。使用javascript调整图像大小
这是我的HTML:
<input type="file" name="filUpload" id="filUpload" onclick="" onchange="showimagepreview(this)">
<br />
<div id="before">
<img id="imgprvw" alt="" class="img-thumbnail" style="width: 250px; height: 250px;" />
这是我的JavaScript:
function showimagepreview(input) { //image preview after select image
if (input.files && input.files[0]) {
var filerdr = new FileReader();
filerdr.onload = function(e) {
url = e.target.result;
image = url;
$('#imgprvw').attr('src', url);
//console.log(url);
//$('#imgprvw').attr('src', e.target.result);
//url = e.target.result;
//$("#imgpath").val(url);
}
filerdr.readAsDataURL(input.files[0]);
}
}
此代码转换图像咬阵列,我需要使用咬数组来调整图片的大小。有没有可能的方法来做到这一点。
我会将该二进制数组传递给Web服务。我的图像尺寸太高,需要很长时间,这就是为什么我需要转换。
调整其大小,这样在画布上:
function showimagepreview(input) { //image preview after select image
if (input.files && input.files[0]) {
var filerdr = new FileReader();
filerdr.onload = function(e) {
var img = new Image();
img.onload = function() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = 250;
canvas.height = canvas.width * (img.height/img.width);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
// SEND THIS DATA TO WHEREVER YOU NEED IT
var data = canvas.toDataURL('image/png');
$('#imgprvw').attr('src', img.src);
//$('#imgprvw').attr('src', data);//converted image in variable 'data'
}
img.src = e.target.result;
}
filerdr.readAsDataURL(input.files[0]);
}
}
我没有测试过这还,但它应该工作。
你试图链接的问题[调整图像与javascript canvas(smooth)](http://stackoverflow.com/a/19262385/1960455),但它不是那样可见的。作为一个注释:这个问题与链接的问题非常相似,所以它应该更好地标记为重复。 – 2014-11-25 09:57:21
它很相似,但它没有包含文件上传并将加载的图像添加到画布。尽管如此,感谢代码清理。我没有找到简单的缩进方法。 – nils 2014-11-25 10:01:04
我明白你的意思,我可能会错的:但是一遍又一遍地创造答案,这只是略有不同,不会有助于保持清晰。问题是关于调整大小,而不是“如何将FileReader读取的数据作为图像绘制到画布中”或类似的东西。虽然OP可能不知道该怎么做,但它应该是一个不同的问题恕我直言。 – 2014-11-25 10:19:39
如果你真的想调整图片的大小(不只是更改网站上的大小),或许检查出通过帆布调整:http://stackoverflow.com/questions/19262141/resize-image -with-javascript-canvas-smooth 但通常我会在后端做到这一点。 – nils 2014-11-25 09:21:38
我会将该二进制数组传递给Web服务。如果图像尺寸太大,需要很长时间,这就是为什么我需要转换。 – Saranga 2014-11-25 09:25:00
是的,然后通过画布调整它。您可以使用'document.getElementById(“mycanvas”)。toDataURL('image/png');'以便将PNG作为数据URL。 – nils 2014-11-25 09:25:40