Foros del Web » Programando para Internet » Javascript »

Guardar canvas como imagen .png (download)

Estas en el tema de Guardar canvas como imagen .png (download) en el foro de Javascript en Foros del Web. Hola buenas tardes. Estoy empezando con javascript y ahora mismo tambien me encuentro con una necesidad en php. Me imagino que es algo sencillo pero ...
  #1 (permalink)  
Antiguo 06/08/2012, 08:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Guardar canvas como imagen .png (download)

Hola buenas tardes.
Estoy empezando con javascript y ahora mismo tambien me encuentro con una necesidad en php.
Me imagino que es algo sencillo pero no avanzo.
Más exactamente necesito guardar un canvas html5 como imagen .png, es decir que al pulsar un botón el canvas se convierte en .png mediante canvas.toDataURL() y se fuerce la descarga de la imagen en el ordenador del usuario via php.
Todo esto con la extensión de archivo .png, que es de lo que se trata.
He visto muchos ejemplos y no lo consigo.
Por favor mirar este link:
http://motyar.blogspot.com.es/2010/04/save-html5-canvas-data-as-image.html
y el ejemplo : http://motyar.info/draw/

No se a qué se refiere con lo de poner canvas.todataURL() como POST y agradecería unas lineas de código para poder avanzar y una pequeña explicación si es posible para entenderlo.
Muchas gracias!
  #2 (permalink)  
Antiguo 06/08/2012, 12:56
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Guardar canvas como imagen .png (download)

Fijate si te sirve:
Código PHP:
<?php 
if(isset($_POST['x']) && !empty($_POST['x'])){
    
$file=base64_decode($_POST['x']);
    
$ctype="image/png";
    
header("Pragma: public"); 
    
header("Expires: 0"); 
    
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    
header("Cache-Control: private",false);
    
header("Content-Type: $ctype"); 
    
header("Content-Disposition: attachment; filename=\"archivo.png\";" ); 
    
header("Content-Transfer-Encoding: binary"); 
    
header("Content-Length: ".strlen($file))/1024
    echo 
$file;
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
onload=function(){
    var c=document.getElementsByTagName('canvas')[0];
    c.style.cursor="pointer";
    var ctx=c.getContext('2d');
    ctx.fillStyle="rgb(255,0,0)";
    ctx.fillRect(0,0,100,100);
    (function(c){c.onclick=function(){
        document.getElementById('x').value=c.toDataURL().split('base64,')[1];
        document.getElementById('f1').submit();
    }})(c);
}
</script>
</head>

<body>
<canvas width="100" height="100" id="canvas"></canvas>
<form id="f1" action="<?php echo basename($_SERVER['PHP_SELF']) ?>" method="post"><input name="x" id="x" type="hidden"></form>
</body>
</html>
  #3 (permalink)  
Antiguo 06/08/2012, 13:49
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Guardar canvas como imagen .png (download)

¿Con que nombre tengo que guardar el .php? ¿va aparte no?
¿O todo el código que me enviaste es en un sólo archivo con extensión .php?
Me arroja este error:
Cannot modify header information - headers already sent by...

Es la primera vez que estoy con .php y ando con un pequeño lío...


Realmente lo que necesito es que el usuario pueda guardar como imagen .png al pulsar un botón y pueda descargárselo a su ordenador

Gracias!
  #4 (permalink)  
Antiguo 06/08/2012, 14:52
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Guardar canvas como imagen .png (download)

Va todo en un mismo archivo y con el nombre que quieras y extensión php. Hay que probarlo en un servidor con soporte php. Si te aparece ese error es porque estás copiando y pegando mal.
  #5 (permalink)  
Antiguo 06/08/2012, 18:22
 
Fecha de Ingreso: agosto-2012
Mensajes: 14
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Guardar canvas como imagen .png (download)

Muchas Gracias Panino!
Funciona perfectamente!
Un saludo!
  #6 (permalink)  
Antiguo 24/04/2014, 21:48
 
Fecha de Ingreso: abril-2014
Mensajes: 7
Antigüedad: 10 años
Puntos: 1
Respuesta: Guardar canvas como imagen .png (download)

sabes como modificarlo para que el png sea solo de una parte del canvas?

Etiquetas: .png, canvas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:35.