Estoy creando un rompecabezas simple. Para hacer esto, necesito cortar la imagen que estoy usando en 20 pedazos. ¿Hay alguna manera en Javascript de cortar una imagen en 20 piezas iguales y guardarlas como 20 objetos diferentes dentro de la página web? ¿O simplemente tengo que ir al photoshop y cortar cada imagen yo mismo y llamarla?Cortando una imagen en pedazos a través de Javascript
Respuesta
Puede hacer esto configurando la imagen como fondo en un div, luego configurando su posición de fondo. Esto es básicamente lo mismo que usar CSS Sprites.
(asumir piezas son 100 x 100 px)
<div class="puzzle piece1"></div>
<div class="puzzle piece2"></div>
CSS:
.puzzle {
background-image:url(/images/puzzle.jpg);
width:100px;
height:100px;
}
.piece1 {
background-position:0 0
}
.piece2 {
background-position:-100px -100px
}
ahora puedo hacer eso con ID de div también? – TheChes44
Claro, lo mismo. –
Esto es fácil de hacer con lienzo. La idea general es:
var image = new Image();
image.onload = cutImageUp;
image.src = 'myimage.png';
function cutImageUp() {
var imagePieces = [];
for(var x = 0; x < numColsToCut; ++x) {
for(var y = 0; y < numRowsToCut; ++y) {
var canvas = document.createElement('canvas');
canvas.width = widthOfOnePiece;
canvas.height = heightOfOnePiece;
var context = canvas.getContext('2d');
context.drawImage(image, x * widthOfOnePiece, y * heightOfOnePiece, widthOfOnePiece, heightOfOnePiece, 0, 0, canvas.width, canvas.height);
imagePieces.push(canvas.toDataURL());
}
}
// imagePieces now contains data urls of all the pieces of the image
// load one piece onto the page
var anImageElement = document.getElementById('myImageElementInTheDom');
anImageElement.src = imagePieces[0];
}
Esto podría dar SecurityError: no se pudo ejecutar 'toDataURL' en 'HTMLCanvasElement': lienzos contaminados no se pueden exportar. –
Gracias por esto Matt. –
@MertKoksal Es debido a CORS Puede establecer: img.setAttribute ('crossOrigin', 'anonymous'); consultar: https://stackoverflow.com/a/20424457/7121889 –
se puede utilizar el método drawImage para cortar piezas de una imagen de origen y atraerlos a un lienzo:
drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Using_images
algo como:
document.getElementById("vangogh").onclick=function()
{
draw();
};
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
ctx.drawImage(document.getElementById('source'),33,45);
}
luego cree contenido arrastrable para sus nuevas entidades:
<div id="columns">
<div class="column" draggable="true"><header>A</header></div>
<div class="column" draggable="true"><header>B</header></div>
<div class="column" draggable="true"><header>C</header></div>
</div>
- 1. cómo recortar la imagen en pedazos programáticamente
- 2. una imagen en movimiento de A a B con JavaScript
- 3. Java ¿Loop a través de los píxeles en una imagen?
- 4. TextView cortando una carta en Android
- 5. Detecta el tipo de mimo de una imagen a través de Javascript
- 6. array dividido en pedazos en MATLAB
- 7. Accediendo a una función de ActionScript a través de Javascript
- 8. Convierta una imagen a una matriz RGB en Javascript
- 9. Loop A través de objetos en Javascript
- 10. Exportación a PNG desde Adobe Illustrator cortando bordes
- 11. necesito colocar a través de una matriz PHP en JavaScript
- 12. ¿Cómo buscar a través de una matriz en Javascript?
- 13. reemplazar imagen a través de css
- 14. ¿Cómo puedo editar una imagen jpg a través de Java?
- 15. C# enviar imagen a través de HTTP
- 16. Cortando una lista utilizando una variable, en Python
- 17. Cortando URL con Python
- 18. hr con una imagen a través de css
- 19. moviendo una imagen a través de un lienzo html
- 20. Mostrar BLOB (imagen) a través de JSP
- 21. obteniendo parte de una imagen con JavaScript
- 22. (Javascript) Convertir byte [] a imagen
- 23. Accediendo a los datos de SVG a través de JavaScript
- 24. java HttpURLConnection cortando html
- 25. ¿Agregar un marcador a una imagen en javascript?
- 26. ¿Cómo escribir un script bash que corte las imágenes en pedazos usando la imagen mágica?
- 27. MobileSafari no devolver la información de tamaño de imagen de la derecha a través de JavaScript
- 28. cortando una cadena en varias líneas en bash
- 29. Prototipo de Javascript a través de Object.create()
- 30. ¿Forma de navegador cruzado para voltear html/imagen a través de Javascript/CSS?
Un elemento canvas le dejaría "cortar" las piezas, pero exactamente cómo hacer que dependerá de sus necesidades exactas en torno a lo que desea hacer * * con las piezas. – Pointy
Quiero que las piezas se puedan arrastrar y soltar. Actualmente estoy usando Jquery para esta tarea, pero como esta característica no es compatible, y los complementos de terceros no funcionan, estoy evitando usar Jquery. Podría cambiar a HTML5 si puede arrastrar y soltar. De todos modos, básicamente quiero 20 imágenes diferentes que pueda arrastrar y soltar en un marco para que puedan "resolver" el rompecabezas. – TheChes44