Cambiar el tamaño de la imagen usando HTML Canvas en JavaScript
Los gráficos se utilizan para describir aspectos de las imágenes que son una parte importante de cualquier aplicación web. HTML ofrece dos formas de crear gráficos. El primero es canvas
y el otro es SVG
. En el artículo de hoy, aprenderemos cómo crear gráficos, especialmente cómo dibujar una imagen en HTML con lienzo y JavaScript.
Cambiar el tamaño de las imágenes por canvas
en HTML usando JavaScript
Canvas es un elemento HTML estándar que se utiliza para dibujar gráficos en aplicaciones web. No es más que un área rectangular en la página sin bordes ni contenido. Los usuarios pueden usar esta área rectangular para dibujar gráficos.
Los gráficos renderizados en el lienzo son diferentes de los estilos HTML y CSS normales. Todo el lienzo con todos los gráficos que contiene se trata como un solo elemento DOM.
Métodos de canvas
en HTML
getContext()
: este es un método integrado proporcionado porcanvas
que devuelve el contexto de dibujo en el lienzo según elcontextType
. Si el identificador de contexto no es compatible o ya está configurado, se devuelvenull
. Los tipos de contexto admitidos son2d
,webgl
,webgl2
ybitmaprenderer
.drawImage()
: este es un método integrado proporcionado porcanvas
que ayuda a dibujar la imagen en el lienzo de varias formas.
Sintaxis de drawImage()
context.drawImage(
$image, $sx, $sy, $sWidth, $sHeight, $dx, $dy, $dWidth, $dHeight);
Parámetros
$image
: es un parámetro obligatorio que especifica la fuente de la imagen que debe dibujarse en el lienzo. La fuente de la imagen puede ser cualquier cosa comoCSSImageValue
,HTMLImageElement
,SVGImageElement
, etc.$sx
: Es un parámetro opcional que especifica la coordenadaX
u horizontal de la imagen de origen. Se medirá como un rectángulo desde la esquina superior izquierda para dibujar en la imagen de destino.$sy
: Es un parámetro opcional que especifica la coordenadaY
o vertical de la imagen de origen. Se medirá como un rectángulo desde la esquina superior izquierda para dibujar en la imagen de destino.$sWidth
: es un parámetro opcional que especifica el ancho de la imagen de origen. Se medirá como un rectángulo desde la esquina superior izquierda para dibujar en la imagen de destino.$sHeight
: este es un parámetro opcional que especifica la altura de la imagen de origen. Se medirá como un rectángulo desde la esquina superior izquierda para dibujar en la imagen de destino.$dx
: Es un parámetro obligatorio que especifica la coordenadaX
u horizontal de la imagen de destino. Se medirá como un rectángulo desde la esquina superior izquierda donde se coloca la imagen de origen.$dy
: Es un parámetro obligatorio que especifica la coordenadaY
o coordenada vertical de la imagen de destino. Se medirá como un rectángulo desde la esquina superior izquierda donde se coloca la imagen de origen.$dWidth
: este es un parámetro opcional que especifica el ancho de la imagen de destino. Se medirá como un rectángulo desde la esquina superior izquierda. Si no se especifica ningún valor, el ancho predeterminado es el ancho de la imagen de origen.$dHeight
: Es un parámetro opcional que especifica la altura de la imagen de destino. Se medirá como un rectángulo desde la esquina superior izquierda. Si no se especifica, la altura predeterminada es la altura de la imagen de origen.
Pasos para cambiar el tamaño de la imagen usando JavaScript Canvas
-
Obtiene el contexto del Canvas.
-
Establecer la altura del lienzo.
-
Crea un elemento de lienzo mew para realizar el cambio de tamaño y obtener el contexto del mismo.
-
Establece el ancho y alto del lienzo recién creado.
-
Dibuja la imagen en un nuevo lienzo.
-
Dibuja la imagen en el lienzo final usando el lienzo recién creado.
Código de ejemplo:
<img src="https://images.pexels.com/photos/3408744/pexels-photo-3408744.jpeg?auto=compress&cs=tinysrgb&dpr=2" width="500" height="400">
<canvas id="canvas" width=1000></canvas>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.src =
'https://images.pexels.com/photos/3408744/pexels-photo-3408744.jpeg?auto=compress&cs=tinysrgb&dpr=2';
img.onload = function() {
// set height proportional to destination image
canvas.height = canvas.width * (img.height / img.width);
// step 1 - resize to 75%
const oc = document.createElement('canvas');
const octx = oc.getContext('2d');
// Set the width & height to 75% of image
oc.width = img.width * 0.75;
oc.height = img.height * 0.75;
// step 2, resize to temporary size
octx.drawImage(img, 0, 0, oc.width, oc.height);
// step 3, resize to final size
ctx.drawImage(
oc, 0, 0, oc.width * 0.75, oc.height * 0.75, 0, 0, canvas.width,
canvas.height);
}
Producción:
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn