javascript - 无法绘制大于 250px 正方形的图像

标签 javascript jquery html drawimage

我在使用 drawImage 方法将宽度和高度大于 250PX 的预加载图像放置到 Canvas 上时遇到了一些问题。

//Canvas

var canvas = document.createElement("canvas");
var contex = canvas_image.getContext('2d');
canvas.width = 350;
canvas.height = 350;
canvas.id = 'canvas'
$('.canvas').append(canvas);

//Draw Image to canvas

var imageObj = new Image();
imageObj.onload = new function() {
    contex.drawImage(imageObj, 0, 0);
};
imageObj.src = $('img').attr('src');

我似乎无法让它处理大于 250 像素宽度或高度的图像。但是低于 250 的图像显示......这真的很奇怪和令人沮丧。

最佳答案

您必须从 Canvas 元素中获取上下文。您在帖子中显示的代码(不确定是否是发布问题时发生的拼写错误?尽管如果它不是拼写错误,您应该无法绘制任何东西:-))有以下错误:

这一行:

var contex = canvas_image.getContext('2d');

应该是:

var contex = canvas.getContext('2d');

因为 canvas_image 似乎不存在。

如果您已经加载了图像,则可以直接将其绘制到 Canvas 上 - 无需再次加载图像:

contex.drawImage($('img')[0], 0, 0);

只需确保像处理屏幕外图像一样先点击它的加载事件。

var img = $('img');

img.on('load', function(e) {
    contex.drawImage(img[0], 0, 0);
}

或在 windowload 事件上调用它。

其他需要注意的是,如果图像在左上角的 350x350 像素区域中确实有数据(以防图像非常大)。你可以通过按比例绘制它来测试,看看那里是否有信息:

contex.drawImage(imageObj, 0, 0, canvas.width, canvas.height);

关于javascript - 无法绘制大于 250px 正方形的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994958/

相关文章:

javascript - 将值从 DIV 元素传递到输入

html - 如何使用 HTML 和 CSS 修复导航栏汉堡

c# - 是否有与 Perl 的 HTML::TableExtract 等效的 C#?

javascript - 使用 AngularJs 计算名称更改的发生次数

javascript - 在 Laravel 应用程序中使用 Javascript 进行表单验证

javascript - 如何固定文本框在屏幕上的位置

javascript - 缩放时标记改变位置

当新行添加到数据库时,Javascript 发出警报

javascript - 为字符串中的空格创建 HTML Span

javascript - jQuery - 如何在 DOM 底部添加新的 div