画布上的图像绘制比原始尺寸大
Image on Canvas is drawn larger than original size
On load my image I:
var img = new Image();
img.src = e.target.result;
var canvas = $('#test-canvas')[0];
$('#test-canvas').width(img.width);
$('#test-canvas').height(img.height);
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
但是绘制的图像比原始尺寸大?我已经尝试了一些图像,同样的问题。
解决办法是什么?
jQuery将通过CSS调整元素的大小,这实际上不会改变画布内部的高度和宽度。这将调整实际画布元素的大小。
var canvas = document.GetElementById('test-canvas');
canvas.width = img.width;
canvas.height = img.height;
jsFiddle (http://jsfiddle.net/L0drfwgL/)只是显示它绘制它的比例,并调整画布项目本身的大小。
看起来您正在从加载的image元素中提取图像。您可以使用来自image元素的src,而不是重新创建一个图像对象,然后从元素获取图像的宽度/高度,将图像绘制到画布上。
<script>
$(document).ready(function(){
$('#testImg').on('load',function(){
var image = document.getElementById('testImg');
var canvas = document.getElementById('test-canvas');
canvas.width = image.width;
canvas.height = image.height;
var ctx=canvas.getContext("2d");
ctx.drawImage(image,0,0);
})
});
</script>
/** with vue3 -(to fix drawing canvas image is larger than actual image size **/
const captureImage = () => {
let width = video.value.getBoundingClientRect().width;
let height = video.value.getBoundingClientRect().height;
let context = canvas.value.getContext('2d')
canvas.value.width = width
canvas.value.height = height
context.drawImage(video.value, 0, 0, width, height)
}
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 有没有一个javascript图形绘制库可以进行气球树布局
- 使用jQuery从原始页面内容创建iframe
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- “可绘制地图”设置地图选项“纬度-经度”
- 多维数据集网格未在指定的分区中绘制
- 使用谷歌图表在x轴上绘制日期
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 您可以在不使用javascript绘制到画布的情况下获取原始图像数据吗
- 在3D模型上绘制原始2D形状
- JUMflot如何重新绘制点/选择项目?尝试将项添加到数组中并在不影响原始项的情况下重新绘制它们
- 如何在javascript中绘制图形,同时保留原始的相对位置
- 画布上的图像绘制比原始尺寸大
- 将视频绘制到画布上,具有原始质量