lunes, 30 de junio de 2014

Curso de Marketing viral en vivo (100% on line)

curso de marketing viral

Desde tu casa u oficina cursa, aprende y certíficate en el curso de Marketing viral en vivo,  para mercadear y posicionar en redes sociales obteniendo publicidad masiva,  CURSO EN VIVO CON EL INSTRUCTOR ON LINE, en nuestro sistema de conferencia en línea
curso de marketing viral

curso de marketing viral Participantes hasta 8 cupos curso de marketing viralFecha: 14/07/2014 Hora: 7pm a 8:30pm
Clases en vivo: Lunes, miércoles y viernes (2 semanas)

Con más de 12 módulos del mejor material orientado a proyecto on line las 24 horas,
conferencias en vivo cada semana
curso de marketing viralBs. 2000,00
Uneweb Instituto | Todos los derechos Reservados. Telf. 0212-9533294 – 9538412 celular 04141150705

Facebook provoca un cambio de estrategia en Social Media

Facebook, es una red social que siempre se ha caracterizado por su grandes cambios cada cierto tiempo, pero estos últimos meses está llevando a cabo una serie de modificaciones que ya están afectando de manera notable a la estrategia de Social Media de las marcas.
Primeramente , el descenso en el posicionamiento orgánico de las publicaciones. Según datos de Ogilvy, el alcance orgánico de las publicaciones de páginas bajó a un 6% el pasado mes de febrero de 2014, y esta bajada ha sido incluso hasta el 2% en el caso de las grandes marcas con un elevado número de seguidores. Declaraciones extraoficiales de fuentes internas de Facebook indican que esta bajada va a llegar hasta el 0% dentro de poco.
¿Por qué se ha producido este descenso? La razón está en la gran expansión que ha experimentado Facebook estos últimos años, a un ritmo de crecimiento del 50% anual: Los usuarios tienen tantos "amigos" en la red social que es imposible mostrar el contenido de todos ellas en su timeline (un usuario medio recibe unos 1.500 mensajes diarios). Por eso, se hace necesario priorizar, y ganarán puntos aquellos contenidos que Facebook considere más interesantes. Se valoran aspectos como la originalidad (no repetir entradas), el contenido real (se castiga todo lo que suene a publicidad), el engagement o la coincidencia con los insights de los seguidores, entre más de 100.000 variables.
Al menos, esta es la razón que ha dado Facebook. Como estrategia ad hoc, ha sacado una serie de nuevos formatos publicitarios y medidores para facilitar la tarea comercial de las marcas, previo pago de su importe: Es el caso de los anuncios de vídeo Premium, Audience Insights, Facebook Audience Network o las nuevas métricas sobre el engagement de los vídeos.
Los anuncios de vídeo Premium están en fase beta en Estados Unidos y su coste llegará a alcanzar el millón de dólares diario, según el Wall Street Journal. El funcionamiento es el siguiente: el vídeo comenzará automáticamente cuando el usuario lo visualice en su TL, aunque sin sonido. Para activar el sonido, el usuario debe hacer click sobre el vídeo. La duración máxima del contenido es de 15 segundos, y cada marca tendrá derecho a tres creatividades diferentes con cada compra de espacio (sólo se mostrará una por día para evitar la saturación).
Facebook introduce un cambio significativo respecto a los vídeos de Youtube, y es la medición de audiencias a través de Nielsen OCR. Los anuncios se comprarán por GRPs segmentados, y las otras opciones de segmentación clásicas de Facebook no estarán disponibles para este tipo de formato.
La creatividad debe ser previamente aceptada por Facebook antes de su publicación. La red social ha insistido en su voluntad de que este nuevo formato no resulte invasivo para los usuarios, especialmente para el público adolescente, el más susceptible de abandonar su cuenta.
Respecto a las métricas, además de indicar el número de personas que han iniciado la reproducción del vídeo, se podrá saber el número de vistas (3 segundos o más), los usuarios únicos, la duración media de visionado y la retención de audiencia (ratio de vistas en un fragmento concreto del vídeo respecto a su duración total).
Audience Insights es una nueva herramienta dirigida a anunciantes para conocer más en profundidad los intereses de sus clientes potenciales y afinar más su target. Entre otros, analizará las siguientes variables: datos demográficos como la edad, sexo, estatus, empleo, tipo de familia, nivel de estudios o estilo de vida; las páginas que sigue; la ubicación y el lenguaje; la tecnología que utiliza para conectarse y la frecuencia o los hábitos de compra. Frente a las primeras críticas a la invasión de la privacidad del usuario, ya ha anunciado que se centrará en el estudio de clusters, sin atribuir datos a usuarios específicos con nombre y apellidos.
Facebook Audience Network (FAN), por su parte, se dirige específicamente a anunciantes en dispositivos móviles y a desarrolladores. Se trata de una nueva tecnología diseñada también para segmentar los anuncios y las aplicaciones en función de los intereses del usuario y de sus datos biográficos. Su objetivo principal es optimizar el ROI de las aplicaciones móviles en Facebook.
Con estas medidas, Facebook pretende continuar liderando la monetización de la publicidad en Social Media, pese a los datos que apuntan una fuga de usuarios activos, sobre todo entre el público adolescente. Facebook sigue siendo la red social líder con el 83% de usuarios que la utilizan, pero la tendencia es a la baja y ha experimentado un descenso de la actividad de sus usuarios (que no de las marcas) del 3% en 2013, según el Observatorio de Redes Sociales.
Sin embargo, en términos de publicidad, Facebook consiguió que los ingresos durante el último trimestre de 2013 alcanzasen los 1.500 millones de dólares, su beneficio más alto hasta ahora. Además, el 53% de estos ingresos los consiguió a través de publicidad móvil (de ahí sus esfuerzos en la tecnología FAN). Con estas medidas, orientadas a mejorar la calidad y no la cantidad de los anuncios en la plataforma, Zuckerberg busca afianzar la confianza de los accionistas. No hay que olvidar la brusca caída que experimentó en 2012 tras su entrada a Bolsa, cuando sus beneficios descendieron de 1.000 millones de dólares (2011) a 53.
Un reciente informe de BIA / Kelsey indica que la publicidad en Social Media se triplicará en los próximos cinco años, pasando de los 5,1 millones de dólares registrados en 2013 hasta los 18.000 millones. La mitad de estos ingresos se prevé que se consigan a través de dispositivos móviles y con una segmentación local en función de la ubicación del usuario.
Como conclusión, se puede extraer que todo apunta a que Facebook va a seguir aumentando sus beneficios económicos a través de la publicidad, mediante formatos muy segmentados y a un alto coste, con el objeto de limitar el número de anunciantes y optimizar tanto el ROI como la experiencia de usuario. Puesto que la tendencia es que las publicaciones de pago sustituyan al posicionamiento orgánico, ¿qué va a ocurrir con las PYMES que no puedan competir con estos precios? Presumiblemente, las grandes marcas se quedarán en Facebook, mientras que las pequeñas y medianas empresas tendrán que llevar a cabo una remodelación de su estrategia de Social Media y buscar otras plataformas afines a su target con un coste más asequible.
Fuente:enlace

¿En qué invierten el tiempo los profesionales del Social Media?


Las empresas disfrutan de las redes sociales no solo por la interacción sino además por lo gratis, pero gestionar adecuadamente la presencia online de la marca en dicha plataforma ya no tanto. Se trata de una laboriosa tarea que requiere esfuerzo y dedicación.
El último informe publicado por la Universidad de Social Media Marketing (SMMU) analiza cuánto tiempo invierten los profesionales de marketing en los Social Media y cómo emplean este tiempo o a que actividades dedican una mayor atención.
Según su análisis, la generación de contenido acapara una gran parte de esta dedicación (60,1%). En segundo lugar, aparece a gran distancia el desarrollo de la estrategia (11,6%), seguido de la publicación de contenido (10,4%).Estos profesionales también destinan una pequeña proporción de su tiempo a la escucha y monitorización de la actividad social (7,5%), así como a medir el resultado de sus acciones (4,6%) y atender a sus seguidores (4,1%).
Los encuestados coinciden en afirmar que las redes sociales requieren cada vez de mucho más tiempo y dedicación. 3 de cada 4 indicó que había aumentado el tiempo destinado a los Social Media durante el último año.
El último informe de Social Media Examiner indica que el 64% de los marketers a nivel global dedica un mínimo de 6 horas a la semana a los Social Media, mientras que aproximadamente el 20% destina más de 20 horas semanales.
Una mayor dedicación a la que asimismo se han visto abocados, debido a la diversificación de su estrategia, abarcando un mayor número de plataformas. El 26% de los encuestados por la SMMU indica que gestiona hasta 8 perfiles distintos en las redes sociales. Por su parte, el 30% se centra entre 4 y 5 perfiles, mientras que el 22% actúa en un máximo de 3.

A la hora de valorar su capacidad para medir el ROI, el 37% de los profesionales de Social Media se considera muy capacitado para medir la rentabilidad de sus acciones en las redes sociales, mientras que un 35% piensa que está más o menos en disposición de hacerlo, según recoge Social Media Examiner.
Por otra parte, las empresas participantes en la encuesta de la SMMU indican que, pese a que medir efectivamente el ROI continúa siendo una tarea compleja, las empresas continúan apostando por las redes sociales y, en consecuencia han aumentado su presupuesto. El 54,4% de las empresas ha aumentado su presupuesto, mientras que el 37,9% ha mantenido la misma inversión.}
Fuente:enlace

domingo, 29 de junio de 2014

Aprende sobre las funciones en PHP



Al hablar de php, una de las herramientas mas importantes en cualquier lenguaje de programación son las funciones. Una función consiste en un conjunto de rutinas y acciones que a lo largo del script van a ser ejecutadas multitud de veces agrupados en una FUNCION y desde cualquier punto del script puede ser llamada y ejecutada. A su vez, esta función puede recibir parámetros externos de los cuales dependa el resultado de una función.
Las funciones deben ser colocadas siempre antes de realizar la llamada a la función (como es lógico). La sintaxis de una función es la siguiente:
function nombre(parámetros){
instrucciones de la función
para llamar a la función sería de la siguiente forma: nombre(parámetros)
Un ejemplo para entender el uso de funciones es el siguiente:
Crearemos una función que realice la suma de dos números y muestre el resultado
function sumar($sumando1,$sumando2){
$ suma=$sumando1+$sumando2
echo $sumando1.”+”.$sumando2.”=”.$suma;
}
sumar(5,6)
Un hecho relevante que cabe destacar es que las variables que declaremos dentro de la función solo existirán o tendrán dicho valor dentro de la función.
Existen casos en los cuales no sabemos el número de parámetros que le pasaremos a la función y en estos casos debemos usar las funciones creadas al efecto como son:
func_num_args() Numero de parámetros que se le han pasado a la función
func_get_args() Devuelve un elemento de los que forman la lista de argumentos

Fuente:enlace

Cónoce las distintas maneras de acceder a objetos Image Javascript

Distintas formas de obtener objetos Image de Javascript, a través de los elementos de la página, creándolo por nosotros mismos, etc.

Este es un Taller de Javascript que además se enmarca dentro del Manual del tratamiento de imágenes de Javascript. Vamos a aprender a obtener objetos Image de Javascript, que luego podemos utilizar para lo que deseemos.
Vamos a mostrar varias de las maneras que tenemos para realizar ese paso, algunas más generales y obvias y otras más específicas de entornos de trabajo determinados. Al final siempre obtenemos lo mismo, una variable que tiene dentro un objeto Image.

Crear una imagen desde código Javascript

La manera más directa es crear tu objeto imagen (objeto Image de Javascript) instanciando un objeto de la clase Image, de esta manera:
var objImagen = new Image();
Luego podríamos asignar valores a las distintas propiedades del objeto imagen, para configurarla. Por ejemplo:
img.src = 'imagen-desarrollowebcom.gif';

Obtener el objeto imagen a partir de una imagen de la página

Si lo deseamos, podemos obtener el objeto imagen a través de una de las imágenes que haya en la página donde estamos trabajando, es decir, alguna etiqueta IMG del documento HTML actual.
Para ello podemos acceder a ese elemento con un document.getElementById(), indicando el identificador (atributo id) de la imagen que deseemos.
var img = document.getElementById("im1");
Esto nos recuperaría el objeto Image asociado con la etiqueta IMG que tiene el identificador id="im1".
También podemos acceder a cualquiera de las imágenes de la página a través del array de imágenes, "Images", que depende del objeto document.
var img = document.images[1];
Con esto obtenemos el objeto Image de la segunda etiqueta IMG que hay en la página.

Obtener el objeto Image a través de data: url

Otro método es utilizar una imagen expresada como cadena de caracteres codificada con formato Base64, en un esquema llamado data: url.
var img = new Image();

img.src = 'data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==';

Nota: Piensa en la diferencia entre guardar la imagen en un archivo gráfico y guardarla en una cadena de caracteres en tu código Javascript. Son dos variantes radicalmente distintas y por tanto tienen diferentes particularidades. La ventaja es que no se tiene que hacer conexiones con el servidor para traerse esas imágenes y que no necesitaremos precargarlas. La desventaja es que las imágenes no se almacenan en caché y que si son muy grandes, generan un código muy largo.
Con el código anterior tendríamos un objeto imagen a partir de una cadena de texto. La imagen es pequeña, por eso el código de la imagen también es corto.
Este formato data: url no está disponible en todos los navegadores, aunque los más modernos sí lo soportan, como Firefox, Chrome, Opera o Internet Explorer a partir de la versión 8.
Para saber si tu navegador es compatible con ese formato, coloca este código:
document.images[0].src = 'data:image/gif;base64,R0lGODlhCwALAIAAAAAA3pn/ZiH5BAEAAAEALAAAAAALAAsAAAIUhA+hkcuO4lmNVindo7qyrIXiGBYAOw==';

Esto altera el atributo src de la primera etiqueta IMG de la página y por tanto cambiará la imagen que se ve en el navegador. Obviamente tendremos que tener una imagen por algún lado en la página para que esa instrucción funcione.
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros cursos de Programación visita www.uneweb.com para más información.
Fuente:enlace

sábado, 28 de junio de 2014

Aprende sobre el constructor de objetos Image

Describimos la forma de realizar una precarga de imágenes en la caché.




El objeto Image posee en JavaScript un método constructor, de tal forma que podemos declarar con él un objeto de este tipo al principio de nuestra página, dentro de la cabecera de la misma.

La sintaxis para usar este constructor es la siguiente:

nombre_imagen = new Image (width,height);

donde los parámetros width y height corresponden a los atributos análogos de la imagen definida. Si no especificamos estos parámetros, con la declaración del constructor tendremos ya creado el nuevo objeto Image, pero el navegador no sabrá el tamaño que va a tener la imagen asociada. No obstante, no suele ser necesario establecer estos parámetros, por lo siguiente.

El navegador no sabe tampoco con la declaración anterior qué imagen en concreto es la asociada al objeto, por lo que no podrá cargarla en memoria, y si nos referimos a ella para hacer que aparezca dinámicamente se producirá un error. Para evitar esto, la declaración del objeto se debe acompañar de otra en la que establecemos qué imagen en concreto es la asociada al objeto, y esto se hace con la escritura:

nombre_imagen = new Image ( );
nombre_imagen.src = "ruta_imagen";

Y con esto el navegador ya sabe que hemos declarado un nuevo objeto imagen y sabe también qué imagen en concreto es la asociada al objeto, por lo que conoce su peso en Ks, pudiendo cargarla en memoria y tenerla así disponible para poder usarla cuando queramos. Si además hemos declarado su tamaño mediante los parámetros width y height, ya tiene todos los datos que definen al nuevo objeto. Ejemplo de declaración completa:

logotipo = new Image(249,28);
logotipo.src="images/logo.gif";

La declaración de los objetos Image que figurarán en nuestra página es muy importante, sobre todo en el caso de que en ella vayamos a cambiar dinámicamente la ruta de alguna de las imágenes inicialmente presentes en el BODY. Este es el caso de los famosos rollovers en los que, si no hemos declarado en la cabecera el objeto Image correspondiente a la nueva imagen a pintar en pantalla con su ruta correcta, el navegador no sabrá a qué nos referimos, con lo que nos dará el típico error de JavaScript "document.nombre_imagen no es un objeto".

Declarar un objeto Image dentro del HEAD de la página, dando la ruta de su imagen asociada, se conoce también con el nombre de precarga de imagen, ya que efectívamente, éste es el efecto que se consigue con esta declaración. Vamos a ver en el capítulo siguiente cómo se estructura una página con precarga y cómo se construyen los rollovers.

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros cursos de Programación visita www.uneweb.com para más información.
Fuente:enlace

Cargador universal de imágenes

Se presenta un script para cargar imágenes a usar en la página.


El propósito del script que puede verse/descargarse más abajo tiene como objeto utilizar un único javascript que nos sirva SIEMPRE y en cualquier página web para cargar las imágenes que se vayan a utilizar. El ya utilizado en el punto 13 de este manual es válido igualmente, pero está enfocado a las 3 imágenes concretas del ejemplo, guardadas en unas rutas/directorios concretos y que utiliza 3 variables flags que dan por sentado que sólo precargaremos esas 3 imágenes. De esto, deducimos que para adaptar ese script a nuestra Web particular habría que modificar el código sustancialmente, lo que sería bastante engorroso. 


Lo que proponemos con el siguiente código es: 

1. Transformar el script ya conocido para adaptarlo a un uso global.
2. Con un mínimo esfuerzo indicaremos rutas,nombres de imágenes,Variables y Aspecto de la Precarga de TODAS las imágenes.
3. El ejemplo concreto está orientado a una página web home.html, por ejemplo, que es donde se precarga todo y que al terminar nos redirige al verdadero inicio de nuestra página inicio.html, que es donde se emplearán todas las imágenes cargadas.


INICIO DE CODIGO

<HTML>
<HEAD><TITLE>Cargando Imagenes</TITLE>
<STYLE TYPE="text/css">
DIV { background-color: black; color: white; border: 2px solid red; width: 30% }
</STYLE>
<SCRIPT TYPE="text/javascript">
//Script por José.A Torres
//Majadahonda 2003

miArray = new Array ("imagenes/ElMenu_over00.jpg","imagenes/foto1.bmp","imagenes/foto2.bmp",
"imagenes/foto3.bmp","imagenes/pedazo1.jpg","imagenes/pedazo2.png",
"imagenes/pedazo3.jpg","imagenes/pedazo5.jpg","imagenes/pedazo6.png",
"imagenes/pedazo7.png","imagenes/pedazo8.jpg","imagenes/pedazo9.jpg");
document.write("IMAGENES BAJANDO A LA CACHE DE SU NAVEGADOR<BR>");
patron = new RegExp("imagenes/");

for (cont=0;cont<miArray.length;cont++) {
document.write("<DIV NAME='capa'>");
document.write("Imagen: " + miArray[cont].replace(patron,""));
document.write("<br>");
document.write("...en cola de Precarga OK<br></DIV>");

eval ("imagen" + cont + " = new Image();");
eval ("imagen" + cont + ".src = " + "\"" + miArray[cont] + "\";");

}
document.write("TODAS LAS IMAGENES YA ESTAN EN PRECARGA");

cont=0;
function pruebaCarga() {

if (eval("imagen"+cont).complete == true) {
window.defaultStatus= "Imagen"+cont+ "/" + miArray.length + " CARGADA";
cont++;

}

if (cont<miArray.length) setTimeout('pruebaCarga()',500);
else {
window.defaultStatus="Carga de imágenes TERMINADA";
window.open("inicio.html","MenuPrincipal","fullscreen=yes");
}
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#808AC2" onLoad="pruebaCarga();return true;">
<!-- cuerpo de la pagina -->
</BODY>
</HTML>




FIN DE CODIGO 



Explicación:
En un Array metemos las rutas relativas de todas las imágenes a precargar. En este caso,se encuentran todas en la carpeta Imágenes, pero no hay problema en que estén en varias diastintas mientras se indique en el array la ruta correcta. 



El script crea automáticamente las referencias a cada objeto imagen para poder tener acceso a cada objeto y a sus propiedades. La denominación automática es imagen0,imagen1,imagen2..[...]..imagen+miArray.length-1 

La línea de código 
patron = RegExp("imagenes/");
y más adelante:
+ miArray[cont].replace(patron,"")

son pura estética. Con ambas indicamos a document.writeque de los argumentos del Array omita escribir en pantalla la subcadena: "imagenes/" para no mostrar la ruta completa, pues en ciertos casos ésta podría ser bastante larga si tenemos una ruta demasiado larga. Si las rutas fuesen por ejemplo "paginainicio/articulos/electrónica/imágenes/camaras..." 

"paginainicio/articulos/electrónica/imágenes/moviles..."
podríamos asignar:

patron = RegExp("paginainicio/articulos/electrónica/imágenes/");
para omitir en cada imagen cargada esa cadena. 
Lo mismo ocurre con las etiquetas <DIV> ...</DIV>se han utilizado para que el usuario mediante hojas de Estilo incrustadas o por el atributo STYLE de DIV defina cómo se van a mostrar las líneas que nos informan del progreso de carga en pantalla: colores,tamaños,fondo,bordes,etc. Otro aspecto meramente de Forma. 

Finalmente, cuando el navegador lee la última etiqueta HTML se llama repetidamente a una función function pruebaCarga()que comprueba el estado de CADA imagen.Sobre los tiempo de llamada (medio segundo en el ejemplo, o 500 milisegundos) conviene no abusar poniendo valores como 1 milisegundo o en general valores más bajos de 250 o 300 pues podríamos forzar demasiado los recursos del navegador y ,según en qué casos, obtener un error de"out of memory"

Cada imagen que se detecta como cargada se reflejará en la barra de estado del navegador (esquina inferior izquierda) y el total de las que hay. Finalmente, cuando todo está cargado la página nos autoconduce con window.openinicio.html donde ya podremos hacer libre uso de todas las imágenes. 


Podemos comprobar que todo ha funcionado de una forma simple: borramos antes de nada la Caché de nuestro navegador y lo configuramos en "Actualizar la página cada vez que se visita". A continuación ejecutamos la página cargadora de imágenes. Al terminar veremos en Herramientas/Opciones de Internet/Configuración/Ver Archivos (en caso de Internet Explorer) que efectivamente las imágenes han "bajado" correctamente, pese a no advertir el clásico aviso del navegador de "Cargando imagen...", pues todo se hace en segundo plano. 



Si volvemos a cargar la página una segunda vez, veremos que en la barra de Status las imágenes se cargan a una gran velocidad, pues se detecta que ya están en la caché y no hay necesidad de volver a cargarlas. 



AVISO IMPORTANTE 



Para probar el código es necesario "colgar" realmente las páginas en internet, o al menos que las rutas indicadas en el Array apunten a cualquier carpeta contenedora de imágenes en internet. Si probamos el ejemplo en "Local", en nuestro propio Pc, con las imágenes también en nuestro ordenador, el script parece no funcionar, pero sólo parece. Esto es así porque el Navegador no almacena las imágenes en su Caché, pues detecta que YA se encuentran en nuestro disco duro y no hay necesidad de "bajarlas". Para que el Status"Imagen4/x Cargada" se visualice en tiempo real,la ventana debe de tener el foco activo.Si al ejecutar la página la minimizamos, el script seguirá ejecutándose correctamente y precargando, pero sólo al seleccionarla otra vez veremos el nuevo Status actualizado.



Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros cursos de Programación visita www.uneweb.com para más información.
Fuente:enlace

viernes, 27 de junio de 2014

Aprende cómo cargar una imagen con PHP y enviar a Pixlr

Un script para hacer un upload de una imagen con PHP en el servidor y su envío a Pixlr por medio del API.


En el siguiente tutorial vamos a utilizar PHP en nuestro servidor y el API de Pixlr para conseguir una página que permita al visitante hacer un upload de una imagen de su disco duro, y luego enviarla a Pixlr para poder editarla con este programa online de retoque fotográfico.

Este ejemplo sería un típico caso de uso del API de Pixlr, que estamos explicando en el Manual de uso del API de Pixlr con PHP. En anteriores capítulos ya revisamos lo que era Pixlr y los primeros fundamentos de su API para desarrolladores, por lo que recomendamos su lectura si desconoces esos puntos.
Así pues, en líneas generales esto es lo que hará el script PHP que nos permitiría hacer esta tarea.
Lo primero será comprobar si estamos recibiendo algo desde un formulario. En caso de que no recibamos nada mostraremos un formulario para hacer un upload de un archivo. Si recibimos algo de un formulario, querrá decir que nos están enviando un archivo y tendremos que comprobar si es una imagen y tiene las características que deseábamos. Luego tendremos que guardar la foto subida, si es que se validó correctamente y componer una URL, con una serie de parámetros definidos en la documentación del API, para enviar a Pixlr esa imagen para su edición.
Por cierto, en artículos anteriores de DesarrolloWeb.com ya mostramos cómo se hacía un upload de un archivo con PHP, luego no tendríamos que tener problema con ello.
Veamos el código completo, que está comentado y luego daré algunos comentarios y explicaciones adicionales.
<?php
if (!$_POST){
   //si no recibo nada por post, muestro una página con un formulario de carga de la imagen
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
   <title>enviando archivo</title>
</head>

<body>

<form action="cargar-imagen-pixrl.php" method="post" enctype="multipart/form-data"> 
<b>Enviar un nuevo archivo: </b> 
<br> 
<input name="image" type="file"> 
<br> 
<input type="submit" name="submitir" value="Enviar"> 
</form> 


</body>
</html>
<?php
}else{

   //Ver si recibo imagen en $_FILES
   if(empty($_FILES['image'])) {
      echo "No he recibido la imagen";
   exit;
   }
   //ver si es un upload error
   if($_FILES['image']['error'] != UPLOAD_ERR_OK) {
      echo "Error escribiendo el archivo al disco ". $_FILES['image']['error'];
   }
   
   //Recibo parámetros del archivo de upload
   $archivo = $_FILES['image']['tmp_name'];
   $tipo = $_FILES['image']['type'];
   $nombre_original = $_FILES['image']['name'];
   $tamano = $_FILES['userfile']['size'];
   
   //calculo la ruta donde voy a guardar el fichero
   //quizás te interesaría editar el $nombre_original para que sea único en tu servidor y no machacar otras fotos y que el nombre del archivo tampoco tenga caracteres raros que puedan molestar.
   $ruta_guardar = "images/". $nombre_original;
   
   //aquí podría validar el fichero (esto son sólo un par de validaciones de prueba)
   if (strpos($tipo_archivo, "jpg") === 0){
      echo "Sólo se permiten archivos jpg";
      exit;
   }
   if ($tamano > (1024 * 1024)){
      echo "Sólo se permiten archivos de 1 mega máximo";
   }
   
   
   //Copio el fichero en el servidor
   if(!move_uploaded_file($archivo, $ruta_guardar)) {
      echo "Error copiando el fichero";
   exit;
   }
   
   //redirijo al navegador al servicio de edición de la foto en Pixlr
   //idioma de la interfaz de pixlr
   $parametros = "loc=es";
   //imagen que queremos poner para editar
   $parametros .= "I=" . urlencode("http://www.desarrolloweb.com/probando/" . $ruta_guardar);
   //título de la imagen
   $parametros .= "&title=" . urlencode("foto");
   //página a la que redirigir en caso que se salgan de pixlr
   $parametros .= "&exit=" . urlencode("http://www.desarrolloweb.com");
   //method por el que me enviarán los datos de la imagen editada
   $parametros .= "&method=GET";
   //nombre de mi sitio web, que mostrar a la hora de guardar como
   $parametros .= "&referrer=en%20DesarrolloWeb.com";
   //página a la que se enviarán los datos de la imagen editada
   $parametros .= "&target=" . urlencode("http://www.desarrolloweb.com/probando/salvar-imagen-pixrl.php");
   
   header("Location: http://www.pixlr.com/editor/?" . $parametros);
   
}   
?>
Como se puede ver, la primera parte, en la que se crea el formulario no tiene más problema. La parte que se torna interesante es en la que, por medio de PHP se sube el archivo enviado por el usuario y se guarda en el servidor. Con respecto a este punto habría que comentar que en el servidor tendríamos que hacer las validaciones necesarias para asegurar que ese archivo es correcto y del formato deseado.
En este script PHP el archivo subido se guarda directamente en un directorio llamado images. En nuestro sistema de upload quizás habría que hacer cosas adicionales, como guardar la referencia de la imagen en la base de datos, o renombrar el archivo antes de guardarlo en el servidor, para que tenga un nombre único y no machaque archivos enviados anteriormente por otros usuarios.
En cualquier caso, toda la parte del upload de la imagen no tiene más importancia con respecto al API de Pixlr. Lo que es importante es saber cómo hemos nombrado el fichero y dónde está guardado después de la carga en el servidor. Lo que nos interesará más es la parte en la que se crea la URL para enviar esta imagen a Pixlr. Eso se puede ver en esta parte del código, en la que creamos los parámetros indicados en el API para la URL:

//redirijo al navegador al servicio de edición de la foto en Pixlr
//idioma de la interfaz de pixlr
$parametros = "loc=es";
//imagen que queremos poner para editar
$parametros .= "I=" . urlencode("http://www.desarrolloweb.com/probandoqwerty/" . $ruta_guardar);
//título de la imagen
$parametros .= "&title=" . urlencode("foto");
//página a la que redirigir en caso que se salgan de pixlr
$parametros .= "&exit=" . urlencode("http://www.desarrolloweb.com");
//method por el que me enviarán los datos de la imagen editada
$parametros .= "&method=GET";
//nombre de mi sitio web, que mostrar a la hora de guardar como
$parametros .= "&referrer=en%20DesarrolloWeb.com";
//página a la que se enviarán los datos de la imagen editada
$parametros .= "&target=" . urlencode("http://www.desarrolloweb.com/probandoqwerty/salvar-imagen-pixrl.php");
Con todas estas instrucciones lo que estoy generando es una cadena que crea una serie de parámetros, para enviar a Pixlr y decirle cosas como dónde está la imagen que quiero que abra para editar, el título que tiene, qué quiero que haga una vez el usuario la guarde, etc.
Todos esos parámetros ya los hemos comentado en las notas sobre la documentación del API de Pixlr.
Pero aun así voy a insistir en varios puntos.
  • Los datos están viajando por la URL, por lo que quizás deberíamos codificar algunas cadenas a formato URL.
  • En el parámetro image le digo dónde está la imagen, indicando la ruta absoluta completa para llegar a ella en el dominio donde la he guardado. Pixlr, cuando se abra, se encargará de recibir este archivo de imagen y de mostrarlo al usuario para su edición.
  • Los parámetros Referrer y Target se tienen que indicar juntos, es decir, se necesitan de ambos a la vez para que Pixlr permita guardar la imagen en nuestro servidor, una vez el usuario seleccione Fichero/Guardar en la interfaz de Pixlr.
  • Con el parámetro exit indicamos la URL que queremos que Pixlr redirija al usuario en caso que se salga sin llegar a guardar el archivo enviado.
Por último en el código PHP hacemos una redirección a la URL de Pixlr para que este programa se encargue de dar soporte al usuario para edición de la imagen directamente desde el navegador.
header("Location: http://www.pixlr.com/editor/?" . $parametros);

Con esto está todo lo que necesitamos para enviar el archivo para edición gráfica. En el artículo siguiente veremos cómo recibirlo, una vez editado por el usuario,en una página PHP y salvarlo en nuestro servidor.

Entradas populares