我正在尝试复制动态上传的图片。我正在使用drawImage()来做到这一点。如何在保持宽高比的同时使用drawImage()复制动态上传的图像?
示例fiddle
HTML:
<button id="button1">Picture</button>
<div id="main">
<img id="profile_pic" src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/aa/CocaColaBottle_background_free.png/200px-CocaColaBottle_background_free.png">
</div>
<div id="lgt_1">
<div>
<canvas id="lcv_1" class="drw"></canvas>
</div>
</div>
JS:
$("#button1").click(function(){
alert("sdfsfsdf")
var ctx = $('#lcv_1').get(0).getContext('2d');
var img = $('#profile_pic').get(0);
ctx.drawImage(img,0,0,75,75);
});
如果还有其他更好的方法,我愿意接受这些想法。
答案 0 :(得分:0)
你可以保持身高;图像宽度:
$("#button1").click(function(){
alert("sdfsfsdf")
var ctx = $('#lcv_1').get(0).getContext('2d');
var img = $('#profile_pic').get(0);
ctx.drawImage(img,0,0,img.width, img.height);
});
答案 1 :(得分:0)
您可以做的是计算在可用区域内拟合图像所需的比例。如果图像太高或太宽,这应该有用。
它还会放大较小的图像以适应该区域,因此,如果您不想要的话,只需将比例限制为1.
var areaWidth = 300,
areaHeight = 150;
var scale = Math.min(areaWidth / img.width, areaHeight / img.height);
ctx.drawImage(img, 0, 0, img.width * scale, img.height * scale);
答案 2 :(得分:0)
试试这个:
将图像宽度和高度乘以所需的百分比:
$("#button1").click(function(){
var ctx = $('#lcv_1').get(0).getContext('2d');
var img = $('#profile_pic').get(0);
ctx.drawImage(img,0,0, img.width * 0.50, img.height * 0.50);
});
答案 3 :(得分:0)
我将图像集中在画布上,保持纵横比 更新了fiddle。
$("#button1").click(function(){
//alert("sdfsfsdf")
var ctx = $('#lcv_1').get(0).getContext('2d');
var img = $('#profile_pic').get(0);
var width = ctx.canvas.width;
var height = ctx.canvas.width * (img.height / img.width);
if (height > ctx.canvas.height) {
height = ctx.canvas.height;
width = ctx.canvas.height * (img.width / img.height);
}
ctx.drawImage(img,(ctx.canvas.width - width) / 2, (ctx.canvas.height - height) / 2, width, height);
});