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

353
Vistas
Problema de decodificación de imagen Base64: ¿archivo .png vacío?

Estoy tratando de obtener una imagen .png del elemento <canvas> generado en base al código html .

El javascript que estoy usando es:

 function canvityo() { html2canvas(document.body, { onrendered: function(canvas) { document.body.appendChild( canvas ); var dataURL = canvas.toDataURL(); $.ajax({ type: "POST", url: "imgprocess.php", data: { imgBase64: dataURL } }).done(function(o) { console.log('saved'); }); } }); }

Tengo la biblioteca html2canvas vinculada, crea buenos <canvas> (puedo verlos ya que usé appendChild ), y ahora me gustaría convertir esos <canvas> en un archivo photo.png , para poder guardarlo en el servidor, o INSERT INTO como blob en mi `tabla de base de datos.

 var dataURL = canvas.toDataURL();

hasta este punto, parece que todo funciona bien (puedo obtener esta url , que parece ser muy larga). Debido a la apariencia extraña, estoy bastante seguro de que necesitaría usar la base64 decoding para recuperarlo como un archivo de image .

Mi imgprocess.php se ve así:

 <?php $img = $_POST['data']; $img = str_replace('data:image/png;base64,', '', $img); $img = str_replace(' ', '+', $img); $fileData = base64_decode($img); $fileName = 'photo.png'; file_put_contents($fileName, $fileData); ?>

Muestra el archivo photo.png , pero el archivo está empty y, como no tengo mucha experiencia, he estado luchando para encontrar la causa de este problema.

¿Tal vez ustedes podrían ayudarme a lidiar con este problema?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debería ser $img = $_POST['imgBase64']; no $img = $_POST['data']; ya que el nombre clave de su objeto de datos es imgBase64 al enviar la solicitud de publicación de ajax.

over 4 years ago · Santiago Trujillo Denunciar
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