Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

179
Vistas
Combinar imágenes juntas en lienzo usando JS

Actualmente estoy tratando de agregar una marca de agua a una imagen y estoy usando este script:

 function mixImages(){ var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var imageObj1 = new Image(); var imageObj2 = new Image(); var marginTop = 10; var marginLeft = 10; imageObj1.src = "http://localhost:8080/sisop/storage/app/public/files/16522147787.png" imageObj1.onload = function() { ctx.drawImage(imageObj1, 0, 0, 328, 526); imageObj2.src = "http://localhost:8080/sisop/storage/app/public/files/165221397618.png"; imageObj2.onload = function() { ctx.drawImage(imageObj2, marginLeft, marginTop, 100, 100); var img = c.toDataURL("image/png"); } }; }

Lo cual funciona bien si solo lo hago con 1 lienzo. Pero estoy tratando de hacer esto dinámicamente con cada imagen que se carga en mi código PHP. así que estoy tratando de hacer esto:

 foreach($collection as $file){ echo " <div class='posts-cards'> <canvas id='myCanvas$file->id' width='300' height='300'></canvas> </div> <script> var c=document.getElementById('myCanvas$file->id'); var ctx=c.getContext('2d'); var imageObj1 = new Image(); var imageObj2 = new Image(); var marginTop = 10; var marginLeft = 10; imageObj1.src = 'http://localhost:8080/sisop/storage/app/public/files/16522147787.png' imageObj1.onload = function() { ctx.drawImage(imageObj1, 0, 0, 328, 526); imageObj2.src = 'http://localhost:8080/sisop/storage/app/public/files/165221397618.png'; imageObj2.onload = function() { ctx.drawImage(imageObj2, marginLeft, marginTop, 100, 100); var img = c.toDataURL('image/png'); } }; </script>

Pero por alguna razón, el resultado es este: ingrese la descripción de la imagen aquí

Tengo "display: flex; flex-flow: wrap;" en mi css (se supone que son 2 filas de 4 elementos en cada una), por lo que, por alguna razón, solo se generan las imágenes 5 y 8. Y como puede ver, solo la última imagen se ha "fusionado" con la otra imagen. Estoy bastante atrapado aquí y no entiendo muy bien lo que está pasando aquí..

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda