En este artículo mostraremos cómo se puede enviar una imagen que se ha editado en Pixlr, para salvarla en nuestro servidor, en un directorio donde luego se pueda acceder desde el sitio web. Para ello utilizaremos PHP y nos basaremos en un ejemplo que está a disposición de los desarrolladores en la propia documentación del API. Nosotros hemos completado el ejemplo, personalizado para nuestras necesidades y comentado para facilitar su comprensión.
El usuario salvará la imagen después de retocada con el menú "Fichero / Guardar". Entonces debería aparecer un formulario donde podrá elegir la opción de enviarla de vuelta a nuestro sitio web, como podemos ver en la siguiente imagen:

Si el usuario elige la opción de "Guardar como en tu sitio web" entonces se compondrá una URL con los datos de la imagen para enviarlos a nuestro servidor.
La URL contendrá los siguientes parámetros:
http://www.desarrolloweb.com/probando/salvar-imagen-pixrl.php?image=http://www.pixlr.com/_temp/49ecabd35b75c.jpg&type=jpg&state=fetched&title=foto
<?php
//Recibe los parámetros que vienen por la URL (método GET)
$image = $_GET['image'];
$type = $_GET['type'];
$state = $_GET['state'];
$filename = $_GET['title'];
//Verificar que la url de la imagen viene de Pixlr
if (strpos($image, "pixlr.com") == 0){
//Si la URL no viene de pixlr
echo "Referencia de la imagen incorrecta";
exit;
}
//sin embargo, esta valoración no estaría del todo segura, porque podrían colarlos alguna URL que tuviese el texto "pixlr.com" pero que no fuera realmente una imagen o no viniera realmente de este dominio.
//ahora podemos verificar que realmente el fichero es una imagen
$headers = get_headers($image, 1); //esto sólo funciona en PHP 5
$content_type = explode("/", $headers['Content-Type']);
if ($content_type[0] != "image"){
//Si el tipo de contenido no es una imagen
echo "Tipo de archivo inválido";
exit;
}
//Podrías necesitar asignar un identificador único a esta imagen
//$filename = uniqid();
//define el directorio donde se gardaría la imagen
$save_path = "images/". $filename . "." . $type;
//Copiar la imagen al servidor
if(copy($image,$save_path)){
//la función copy de PHP permite, a partir de php 4.3.0, que el origen sea una URL
//pero sólo funcionará si en tu PHP.ini tienes la directiva allow_url_fopen activada.
echo "Hemos copiado correctamente la foto<p>";
echo '<img src="' . $save_path . '">';
}else{
//si hubo un error en la copia, lo informo
echo "No se ha podido copiar la foto";
}
//Podrás necesitar meter la imagen en la base de datos o hacer otro tipo de acciones
?>
El código es bien sencillo, pero está comentado para que se pueda entender más fácilmente. Aunque lo he comentado en el propio código del script, para ejecutar con éxito algunas de las funciones se deben tener versiones de PHP actualizadas. El paso que comprueba si el tipo de contenido es una imagen sólo funcionará en PHP 5. Por otra parte, el paso de copiar una imagen que se encuentra en una URL de un servidor externo, sólo lo podremos hacer a partir de PHP 4.3.0.
Con esto ya hemos aprendido todo lo que debemos conocer para usar el API de Pixlr, y ofrecer a nuestros usuarios un sistema de edición gráfica avanzada. Todos los scripts utilizados en el vídeo de la demo de uso de Pixlr los hemos publicado y comentado convenientemente. Ahora sólo faltaría personalizarlos según tus necesidades.
| Muy bueno Por: fransoni_vj@hotmail.com | 21/4/2009
|
| Pixlr da mucha libertad a los usuarios, pero... | 20/6/2009 |