#javascript #canvas
#javascript #холст
Вопрос:
Я пытаюсь загрузить изображение, а затем нарисовать его на холсте, но в настоящее время мне удается отобразить только половину изображения:
var image = new Image();
image.crossOrigin = 'Anonymous';
image.onload = function() {
var canvas = document.createElement('canvas'),
ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0);
canvas.style.position = 'absolute';
canvas.style.top = 0;
canvas.style.left = 0;
document.body.appendChild(canvas);
}
image.src = 'https://s3.amazonaws.com/duhaime/blog/visualizations/word-to-viz/heightmap.jpg';
Кто-нибудь видит, что не так с вышесказанным? Любые предложения были бы очень полезны!
Комментарии:
1. размер холста меньше, чем изображение.
2. Аааа, это любопытно. Во всех примерах, которые я видел, не задавался размер холста; они просто позволяют изображению изменять размер холста. Я задам размер холста явно…
3. 300×150 — это размер элемента canvas по умолчанию: html.spec.whatwg.org/multipage/canvas.html#the-canvas-element
4. @appleapple если вы сделаете свой комментарий ответом, я с радостью приму!
Ответ №1:
Потому что размер холста меньше, чем изображение
Просто установите размер холста таким, какой вам нужен, и вы сможете увидеть все изображение.
let image = new Image();
image.crossOrigin = 'Anonymous';
image.onload = function() {
let canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
let ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0);
document.body.appendChild(canvas);
}
image.src = 'https://s3.amazonaws.com/duhaime/blog/visualizations/word-to-viz/heightmap.jpg';
Кстати, вы можете задать размер в css, и у вас останется тот же размер холста (css просто растянет его).
//same code above
let image = new Image();
image.crossOrigin = 'Anonymous';
image.onload = function() {
let canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
let ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0);
document.body.appendChild(canvas);
}
image.src = 'https://s3.amazonaws.com/duhaime/blog/visualizations/word-to-viz/heightmap.jpg';
canvas{width:200px; height:100px;}