复制动态上载的图像
Duplicate dynamically uploaded image
我正在尝试复制动态上传的图像。我正在使用drawImage()来执行此操作。如何使用drawImage()在保持纵横比的同时复制动态上传的图像?
小提琴示例
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);
});
如果还有其他更好的方法,我愿意接受。
我已经将图像居中放置在画布上,保持纵横比
更新的小提琴。
$("#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);
});
你可以保持高度&图像宽度:
$("#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即可。
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);
编辑:在你的小提琴上测试
试试这个:
将图像宽度和高度乘以所需百分比:
$("#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);
});
http://jsfiddle.net/2uxj0v6u/3/
相关文章:
- Jcrop未在加载的图像上初始化
- 阻止浏览器缓存上载的图像
- 跨来源图像加载被拒绝-仅限iPhone-简单图像上传
- 将带有自定义数据的图像上载到服务器
- 取消文件上载时删除图像预览
- 上载图像并重定向到新页面而不刷新
- 使用DataURL字符串将图像上载到picasa
- 上载图像的新版本并避免缓存
- Kinetic.js可以't将图像加载到画布上
- 使用悬停(javascript)将图像加载到另一个图像上
- 如何使用画布更改图像的不透明度,然后将其加载到画布中的另一个图像上?-HTML
- 在延迟加载的图像上使用jQuery缩放
- 上载图像、显示,然后写入 SQL Server
- 使用FormData上载base64编码的图像
- 获取上载的文件/图像的名称
- 将图像上载到本地存储
- 使用大小、高度和宽度验证图像上载
- 无法将图像上载到Firebase存储
- 将base64图像上载到.NET Web服务并在那里进行转换
- 无法在Ajax调用中将图像上载到AmazonS3