Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调整图像大小,但使用javascript保持其比例?_Javascript_Jquery_Html - Fatal编程技术网

如何调整图像大小,但使用javascript保持其比例?

如何调整图像大小,但使用javascript保持其比例?,javascript,jquery,html,Javascript,Jquery,Html,我有一个“文件”输入和一个函数,由事件“onchange”调用。它所做的是调整大小和显示图像,但这并不完全是我需要的 <input type="file" id="imgUp" accept=".jpg" onchange="readURL(this);" > <script type="text/javascript"> function readURL(input) { if (input.files && input.fi

我有一个“文件”输入和一个函数,由事件“onchange”调用。它所做的是调整大小和显示图像,但这并不完全是我需要的

<input type="file" id="imgUp" accept=".jpg" onchange="readURL(this);" > 

<script type="text/javascript">
    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
            $('#avatar,#image')
                .attr('src', e.target.result)
                .width(70)
                .height(70);
            };
            reader.readAsDataURL(input.files[0]);
        }
    }
</script>

函数readURL(输入){
if(input.files&&input.files[0]){
var reader=new FileReader();
reader.onload=函数(e){
$(“#头像,#图像”)
.attr('src',e.target.result)
.宽度(70)
.身高(70);
};
reader.readAsDataURL(input.files[0]);
}
}
是否可以在不使用jQuery的情况下使用Javascript调整大小(保持比例)并显示图像


提前谢谢你

要保留纵横比,您可以只设置图像的宽度或高度,而不是同时设置这两个值

以下是一个例子:

$('#avatar,#image').attr('src', e.target.result).width(70);

在香草Javascript中:

var imgs = document.querySelectorAll("#image, #avatar");
for(var i = 0; i < imgs.length; i++){
     imgs[i].src = e.target.result;
     imgs[i].width = 70;// or imgs[i].height = 70;
}
var-imgs=document.queryselectoral(“#image,#avatar”);
对于(变量i=0;i

要保留纵横比,您只能设置图像的宽度或高度,而不能同时设置这两个值

以下是一个例子:

$('#avatar,#image').attr('src', e.target.result).width(70);

在香草Javascript中:

var imgs = document.querySelectorAll("#image, #avatar");
for(var i = 0; i < imgs.length; i++){
     imgs[i].src = e.target.result;
     imgs[i].width = 70;// or imgs[i].height = 70;
}
var-imgs=document.queryselectoral(“#image,#avatar”);
对于(变量i=0;i

将隐式高度和宽度声明更改为最大高度和最大宽度:

.css('max-width','70px')。css('max-height','70px')

使用“最大高度”和“最大宽度”设置它应该使用的边界框,然后图像将以其本机纵横比适合该边界框

本地香草JS:

.style.maxWidth='70px'

.style.maxHeight='70px'

如果您想从jQuery转向vanilla JS(我为您这么做而鼓掌),请尝试

您的代码的标准转换:

$('#avatar,#image')
  .attr('src', e.target.result)
  .width(70)
  .height(70);
};
变成:

var elements = document.querySelectorAll('#avatar,#image');
Array.prototype.forEach.call(elements, function(el, i){
  el.setAttribute('src', e.target.result);
  el.style.maxWidth = '70px';
  el.style.maxHeight = '70px';
});

将隐式高度和宽度声明更改为最大高度和最大宽度:

.css('max-width','70px')。css('max-height','70px')

使用“最大高度”和“最大宽度”设置它应该使用的边界框,然后图像将以其本机纵横比适合该边界框

本地香草JS:

.style.maxWidth='70px'

.style.maxHeight='70px'

如果您想从jQuery转向vanilla JS(我为您这么做而鼓掌),请尝试

您的代码的标准转换:

$('#avatar,#image')
  .attr('src', e.target.result)
  .width(70)
  .height(70);
};
变成:

var elements = document.querySelectorAll('#avatar,#image');
Array.prototype.forEach.call(elements, function(el, i){
  el.setAttribute('src', e.target.result);
  el.style.maxWidth = '70px';
  el.style.maxHeight = '70px';
});