2017-02-21 10 views
0
<img id='imgt' src='../img/crop.png' alt='img'> 

Оригинальный размер imgt больше, чем 960 х 540.
мне нужно то же изображение в ширину 960px и высота - авто.
Вот моя попытка с помощью холста:как создать изображение меньшего размера

var c1 = document.createElement("canvas"); 
c1.width = 960; 
var ctx = c1.getContext("2d"); 
var img=document.getElementById("imgt"); 
ctx.drawImage(img, 0, 0, 960, auto); 

Console говорит - auto не defined`, но я понятия не имею, что ставить в высоту парам.

Я устал без height паров:

ctx.drawImage(img, 0, 0, 960); 

Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': Valid arities are: [3, 5, 9], but 4 arguments provided.

Любой помощь?

Возможно ли другой способ создания меньшего изображения без холста?

+0

параметр «высота» для метода drawImage не является обязательным. Вы пробовали просто не передавать его вообще или пропускать нуль? – ADyson

+0

действительно ли вам это нужно на холсте? Можете ли вы создать еще один тег '' с указанными свойствами высоты и ширины? Вы пытаетесь отредактировать изображение или просто отображать его по-другому? – ADyson

+0

@ADyson, да, я попробовал, посмотри мое обновление. Мне нужно загрузить новое изображение (960 x auto), поэтому мне нужно создать новое изображение, а не просто отобразить его. – bonaca

ответ

4

вы можете попробовать следующий код.

var c1 = document.createElement("canvas"); 
c1.width = 960; 
var ctx = c1.getContext("2d"); 
var img=document.getElementById("imgt"); 

var _curWidth = c1.width; 
var _autoHeight = (_curWidth/img.naturalWidth) * img.naturalHeight 

ctx.drawImage(img, 0, 0, _curWidth, _autoHeight); 
+0

Это дает мне всегда изображение высотой 150 пикселей, независимо от различных 'naturalHeight'. – bonaca

+0

Вы даете высоту изображению с помощью css ?? – spankajd

+0

Нет, новое изображение вообще не отображается, у меня есть код для его загрузки. Если отображается, он также всегда высотой 150 пикселей. Может быть, 'c1.height' должен быть определен? – bonaca