domingo, julio 25, 2010

PHP For the Absolute Beginner


This area is intended for everyone new to PHP. It opens with a series of informal, entertaining tutorials written by Vikram Vaswani, founder and CEO of Melonfire. These tutorials build on a previously-published 5-part series which has now been updated and extended to embrace PHP 5, making parts of it suitable for those of you who already have worked with PHP 4 in the past.
If you came here to learn about elementary PHP 4 or basic PHP 5, this is for you. Enjoy!

fuente:
http://devzone.zend.com/6/php-101--php-for-the-absolute-beginner/

martes, junio 15, 2010

GD library PHP

Libreria GD

Para entender perfectamente esta librería, les viene muy bien leer los siguientes apuntes (si no lo tienen muy claro):


También, estas funciones otorgan las propiedades de la imagen:

Código
imagesx($im); //devuelve el ancho de la imagen

imagesy($im); //devuelve el alto de la imagen

getimagesize($direccion);

La función getimagesize devuelve un array con los datos de la imagen. Por ejemplo, aplicándolo a la imagen http://blog.nuestroclima.com/wp-content/uploads/2007/08/imagen_satelital_hires.jpg devuelve:
Código:
Array

(

    [0] => 4096       Ancho

    [1] => 4096       Altura

    [2] => 2

    [3] => width="4096" height="4096"

    [bits] => 8

    [channels] => 3

    [mime] => image/jpeg

)


Perfecto, empecemos. Para crear una imagen se utilizan estos siguientes:

Para crear desde un archivo sea en tu servidor o en uno externo:
Código
$im = imagecreatefrompng("dirección"); //para imágenes png

$im = imagecreatefromgif("dirección"); //para imagenes gif

$im = imagecreatefromjpeg("dirección"); //para imagenes jpg y jpeg
Si se carga una imagen con transparencias, para conservarlas, hace falta agregar estas dos lineas despues de crearla.
Código
imagealphablending($im, true);

imagesavealpha($im, true);

 

Ahora, para crear una imagen de cero basta con las funciones:

Código
$im = imagecreate($ancho, $alto);

//para imagenes con una paleta de colores, 

//osea, no tan buena calidad del color.

//

//

$im = imagecreatetruecolor($ancho, $alto);

//para imagenes con un color real, esta es la más usada...
Bueno, ya utilizando estas funciones habremos creado la imagen. No se olviden que siempre se tiene que asignar el valor reslutante de esta fuincion a una nueva variable (no hace falta que sea nueva ¬¬ jajaj).



Datos a tener en cuenta:


Antes de seguir, tiene que quedarles algo claro fundamental mente, y es la visualizacion de la imagen y la DESTRUCCION de la misma. Por qué destruir? Porque sino queda guardada la imagen en la memoria RAM del servidor y eso no es muy agradable. Entonces, para visualizarla basta con agregar el header correspondiente para el tipo:
Código
header("Content-type: image/".$imagenextension.);
Y para imprimir la imagen se usa el comando "image" seguido del tipo de imagen. por ejemplo para una imagen png:
Código
imagepng($im);
Seguido de esta función le va:
Código
imagedestroy($im);



Contenido de las imagenes:


Ahora que tenemos la imagen, vamos a darle el contenido. Para ellos se puede dibujar lineas, puntos, rectángulos (solo el borde) o rectángulos rellenos (no de dulce de leche!! ;D), así como los rectángulos, elipses y polígonos indicando cantidad de puntos y posición de los mismos. También se pueden crear colores de toda la gamma RGB con o sin transparencia. Se puede agregar texto de fuentes por defecto de la librería o fuentes del tipo "True Type", "Free type" y "PostScript" importándolas de un enlace externo. Primeramente vamos por partes y comenzamos por el principio, los colores ;D.


Colores:


Para las creaciones de colores tenemos dos funciones y un verso sin esfuerzo.
Código
$nombreDelColor = imagecolorallocate($r, $g, $b);

$nombreDelColor = imagecolorallocatealpha($r, $g, $b, $valorAlfa);



Por ejemplo podemos crear el color rojo, el amarillo y el violeta:
Código
$rojo = imagecolorallocate(255, 0, 0);

$amarillo = imagecolorallocate(255, 255, 0);

$violeta = imagecolorallocate(0, 255, 255);
Y si se quiere agregar opacidad a uno de estos colores:
Código
$azul = imagecolorallocate(0, 0, 255, 50); //ahí tenemos un 50% de opacidad...



Además de crear colores, se puede tomar el color de un píxel determinado de una imagen determinada con la función imagecolorat();, su sintaxis es
Código
imagecolorat($im, $x, $y);
Código
//por ejemplo en la imagen utilizada es una rápida que encontré por internet de un "mundo"

$im = imagecreatefromjpeg("http://www.hyparion.com/web/diccionari/dics/astronomia/imatges/tierra.jpg");

$color = imagecolorat($im, 100, 100);
Ahora, acá se nos complica un poco. La variable "color" recibe el valor de 9146518 y decimos: "Qué carajo!?". Bueno, para que ese es un valor que para nosotros trabajarlo como rgba (Red Green Blue Alpha, osea, rojo verde azul y transparencia). Para "convertirlo" a ese (rgba) o hexadecimal tenemos las posibilidades de:
Código
//esto se cumple una vez realizado el proceso anterior...

//automático para rgba, el más fácil y practico de todos!

$color = imagecolorsforindex($im, $color);

/*este devuelve un array con los valores:

Array

(

   [red] => 255

   [green] => 0

   [blue] => 0

   [alpha] => 0

)

*/

//

//

//este es simple, se le da un formato y devuelve el valor del color en hexadecimal.

$hex = sprintf("%06X", $color); //devuelve FF0000

//

//

//manualmente para rgba, el más complicado de entender y es lo 

//mismo que la función imagecolorsforindex() pero igualmente se los explico...

$colores = array();

$colores['red'] = ($color >> 16) & 0xFF;

$colores['green'] = ($color >> 8) & 0xFF;

$colores['blue'] = $color & 0xFF;

$colores['alpha'] = ($color >> 24) & 0xFF;

 
Ahora paso a explicar esas cosas raras que nos da php.net sin decirnos que es ¬¬.
Los caracteres ">>" cumplen el rol de operador y recibe el nombre de operador bitwise. Lo que hace este operador es correr determinadas veces la posición del valor indicado en binario. Osea, la variable $color toma un píxel de color rojo puro (a puro me refiero a rgb(255,0,0)) el valor retornado va a ser igual a: 16711680 :o mientras que el valor en rgb es 255. Entonces, diciéndole que me corra 16 lugares los bits de 16711680 me va a dar como resultado un numero decimal igual a 255. Ahora, si no colocamos el 0xFF en el valor del rojo, nos damos cuenta que no hay diferencia, pero cuando tratamos valores rgba, el 0xFF delimita la cantidad de bits para cada valor. Es como decir, para cada valor (rgb) corresponden 8 bits (por eso siempre los corremos para que queden los 8 primeros bits) en cambio, para el valor de alpha le corresponden solo 7 bits, pero como lo corremos 24 lugares quedando solo 7 bits (es como un substring a una cadena de 7 caracteres, aunque le indiques 8, siempre devuelve 7). Se entendió esto? Bueno, sigamos que apenas vamos por los colores!!!

Fondo:

Una cosa muy molesta de la libreria gd, es el color de fondo que por defecto lo pone negro. para eso esta la funcion imagefill() que rellena la imagen desde donde se le indique con el color establecido. Su sintaxis es:
Código
imagefill($im, $x, $y, $color)
Para que rellene por completo la imagen, los valores de $x,$y son igual a 0,0.



Trazados:

Puntos:


Ahora que tenemos los colores, vamos a dibujar. Primero vamos a empezar por un punto, que aunque sea de solo un píxel, es muy útil como para un ejemplo, un captcha. No hace falta demásiada explicación, dibuja un píxel en x,y del color $color
Código
imagesetpixel($im, $x, $y, $color); //$color es igual a el resultado de la función imagecolorallocate()

Líneas:

Para poder dibujar una linea, se indica el x,y de inicio y el x,y de final:
Código
imageline($im, $xInicio, $yInicio, $xFin, $yFin, $color);
Por ejemplo si $im es una imagen de color real de 100x100 y con fondo blanco (ya va a llegar esa parte) podría realizar esto:



Con esto:
Código
$im = imagecreatetruecolor(100, 100);

$color = imagecolorallocate($im, 0,0,0);

imageline($im, 10, 35, 76, 85, $color);



Poligonos, rectángulos y elipses:[/b]

Una vez entendido esto! nos vamos con los polígonos, primero lo primero! el rectángulo
para dibujar un rectángulo se puede dibujar solo su contorno (el borde va a medir 1px) o el rectángulo relleno de color (filled).
Sinceramente la sintaxis es idéntica a la de imageline además, son iguales entre si, solo el borde, o relleno.
Código
imagefilledrectangle($im, $xInicio, $yInicio, $xFin, $yFin, $color);

imagerectangle($im, $xInicio, $yInicio, $xFin, $yFin, $color);
Para el elipse, circulo u ovalo (cambia según los valores dados), al igual que el rectángulo y el polígono que lo vamos a ver posteriormente, se puede solo el borde o relleno. su sintaxis es:
Código
imageellipse($im, $centroX, $centroY, $ancho, $altura, $color);

imagefilledellipse($im, $centroX, $centroY, $ancho, $altura, $color);
Donde $centroX,Y son la posición del punto medio del elipse.
Bueno, para el polígono, se complica otra vez un poco. En la sintaxis del polígono:
Código
imagepolygon($im, $puntosArray, $cantidadPuntos, $color);

imagefilledpolygon($im, $puntosArray, $cantidadPuntos, $color);
La variable $puntosArray es un array, porque no le puse ese nombre al pedo xD jajaja. La estructura del array tiene que ser, cada dos valores corresponden a los valores x,y de un punto, osea:
Código
$puntosArray= array (

/*

x  y  */

10, 10,  //punto 1

15, 26,  //punto 2

50, 36,  //punto 3

68, 10   //punto 4, este ultimo numero va sin coma al final!!

);
En realidad no es tan complicado :P. y para $cantidadPuntos, lógicamente se indica la cantidad de los puntos. pero para no contarlos, basta con un:
Código
$cantidadPuntos = count($puntosArray) / 2;
Y listo. Ahora, el resultado de esta función es una imagen parecida a esta:






Agregar textos:


Ya terminamos con las formás y esas cosas. Ahora vamos por el texto. Para escribir en una imagen se puede utilizar las fuentes que trae por defecto la librería gd o fuentes del "True type", "Free type" o "PostScript Type1". La sintaxis para las postscript se ponen un poco jodidas, además, no conozco las fuentes del tipo postscript. Así que paso a explicar principalmente el imagestring(), además de escribir horizontalmente, también esta la función imagestringup() que escribe verticalmente:
Código
imagestring($im, $fuente, $x, $y, $cadenaTexto, $color);

imagestringup($im, $fuente, $x, $y, $cadenaTexto, $color);
Para la variable $fuente se puede usar los números del 1 al 6. Los ejemplos serian:



Fijense como a partir del numero 5 se repite el tipo de fuente. El problema de imagestring es que tienen el tamaño de fuente fija.

Con funciones donde se indica una fuente externa, se puede indicar el ángulo del texto (ahora lo van a entender) y el tamaño de la fuente. Yo les voy a explicar nomás imagettftext y sus derivados.

(Para descargar fuentes, aca en el foro tenemos una excelente recopilación. )

Primero van a necesitar un archivo del tipo ttf y conocer su link xD, puede estar en el mismo directorio o en uno externo, pero como cualquier cosa, recomiendo que este en tu mismo servidor para que no haya problemás. Yo por ejemplo voy a usar la fuente Hemi Head la cual es utilizada por el foro.
Antes que nada, la sintaxis de esta función es:
Código
$fuente = "hemihead.ttf";

imagettftext($im, $tamanio, $ángulo, $x, $y, $color, $fuente, $texto)
La variable fuente indica donde se encuentra el archivo de la fuente.
Por ejemplo este código,
Código


header("Content-type: image/png");

$im = imagecreatetruecolor(100, 100);

$color = imagecolorallocate($im, 255, 255, 255);

$fuente = "HEMIHEAD.TTF";

imagettftext($im, 15, 0, 15, 20, $color, $fuente, "Wiki");

imagepng($im);

imagedestroy($im);

?>
Da como resultado esta imagen:



Ahora, si yo cambio el ángulo que en caso anterior es 0 por 315:
Código
imagettftext($im, 15, 315, 15, 20, $color, $fuente, "Wiki");
Da como resultado:






Centrar textos:



Una gran necesidad al momento de usar textos en la librería gd, es el tema de centrar el texto. Acá es donde entra en acción la matemática. piensen, primeramente vamos a necesitar conocer el tamaño que ocupa el texto. Para una fuente utilizada con imagestring() se utilizan las funciones:
Código
imagefontheight($fuente);

imagefontwidth($fuente);
Estas funciones devuelven la altura y el ancho en píxeles respectivamente de un carácter de la fuente especificada. como devuelve las propiedades de un solo carácter (es el mismo valor para cualquier carácter) hay que multiplicar los valores obtenidos por la cantidad de caracteres implementados. Entonces podemos hacer algo así:
Código
$fuente = 1;

$cantidadCaracteres = strlen($texto);

$textoAltura = imagefontheight($fuente) * $cantidadCaracteres;

$textoAncho = imagefontwidth($fuente) * $cantidadCaracteres;
Y listo!, pero eso es nomás para las fuentes por defecto, ahora si se quiere con una fuente que usamos en imagettftext, tenemos la función imagettfbbox, su sintaxis:
Código
imagettfbbox($tamanio, $ángulo, $fuente, $texto);
El resultado de esta función es un array con 8 puntos:


0 esquina inferior izquierda, posición X

1 esquina inferior izquierda, posición Y

2 esquina inferior derecha, posición X

3 esquina inferior derecha, posición Y

4 esquina superior derecha, posición X

5 esquina superior derecha, posición Y

6 esquina superior izquierda, posición X

7 esquina superior izquierda, posición Y

Los datos que nosotros necesitamos son, abajo a la derecha y cumplirán el rol de x = ancho y y = altura.

Ahora que tenemos el valor que ocupa el texto tenemos que averiguar cual tiene que ser la posición del texto en la imagen. Cuando usamos una de las funciones para agregar texto, las posiciones x,y que indicamos van a ser las de arriba a la izquierda, por eso no podemos simplemente indicarle el centro de la imagen. Por eso, tenemos que restarle las medidas del texto a las medidas de la imagen. Obviamente hay que hacer ancho de la imagen - (menos) ancho del texto y alto imagen - alto texto. El resultado de estas operaciones dividido dos ( / 2) va a ser la posición x,y que le vamos a asignar al texto. Esto quedaría más o menos así:
Código


header("Content-type: image/png");

$im = imagecreatetruecolor(100, 100);

$color = imagecolorallocate($im, 255, 255, 255);

$fuente = "HEMIHEAD.TTF";

$cajaTexto = imagettfbbox(15, 0, $fuente, "Wiki");

$xCentrado = (imagesx($im) - $cajaTexto[2]) / 2;

$yCentrado = (imagesy($im) - $cajaTexto[3]) / 2;

imagettftext($im, 15, 0, $xCentrado, $yCentrado, $color, $fuente, "Wiki");

imagepng($im);

imagedestroy($im);

?>
Entonces podemos observar que el texto quedo centrado:



Entonces terminamos con suerte la implementacion del texto en imagenes.



Redimensionar:

Una de las otras herramientas que nos da GD es la posibilidad de redimensionar y copiar imagenes.
Para redimensionar lo único que se hace es copiar una imagen a otra indicándole desde donde copiar y pegar, y que tamaño se quiere. Además, tenemos dos funciones una que redimensiona como el paint( osea como que faltan píxeles), es imagecopyresize(). Y otra que rredimensiona suavizando los valores de los píxeles. Esa función es:
Código
imagecopyresampled($im_original, $im_detino, $x_destino, $y_destino, $x_original, $y_original, $ancho_destino, $alto_destino, $ancho_orginal, $alto_orginal);
Donde los x,y son desde donde se quiere copiar la imagen, y los de destino son desde donde se quiere ubicar la imagen.
Si yo tengo esta imagen:



Y quiero que mida la mitad como esto:



Tengo que hacer esto:
Código


header("Content-type: image/jpg");

$im_original = imagecreatefromjpeg("http://www.foroswebgratis.com/fotos/1/3/9/3/5//595440elhacker.jpg");

$im_destino = imagecreatetruecolor(imagesx($im_original) / 2 ,imagesy($im_original) / 2 );

$blanco = imagecolorallocate($im_destino, 255, 255, 255);

imagefill($im_destino, 0, 0, $blanco);

imagecopyresampled($im_destino, $im_original, 0, 0, 0, 0, imagesx($im_destino), imagesy($im_destino), imagesx($im_original), imagesy($im_original));

imagejpeg($im_destino);

imagedestroy($im_destino);

imagedestroy($im_original);

?>


Y listo. por ultimo dejo claro que con imagecopyresize() permite copiar partes dentro de una misma imagen...



Fuente:

http://wiki.elhacker.net/programacion/php/libreria-gd

viernes, mayo 21, 2010

Personaliza GIMP y reemplaza Photoshop

Personaliza GIMP y reemplaza Photoshop

No son realmente muchos los que desembolsilllan alrededor de 500 euros en una súper suite de edición gráfica de buena gana. En todo caso, la paciencia es más barata, y con ella puedes hacer de un programa que promete mucho (aunque algunas veces se queda corto) como GIMP un equivalente a Photoshop. ¿Cómo? agregando plugins y paquetes que, esenciales y no tanto, dan una funcionalidad y capacidad que no habíamos visto antes en una aplicación gratuita y de código abierto.

Cada vez que alguien comete "el pecado" de comparar GIMP con Photoshop (y en general, cualquier programa de edición gráfica con Photoshop), créanlo o no se termina armando un pequeño revuelo alrededor. Sucede que muchos apostarían las manos a que Photoshop resulta un imbatible del diseño, ya sea por la calidad y cantidad de herramientas, por el múltiple soporte y compatibilidad que ofrece en diversos ámbitos, porque la interfaz puede parecerles más o menos amigable y otro sinfín de razones que son una lata enumerar. Es decir, de antemano terminan desmereciendo el potencial de cualquier competidor directo o indirecto. Si vamos al caso, sí hay una característica de Photoshop que es indiscutible más allá de lo que cualquier usuario pueda decir: su elevado precio. Sólo y en suite. Para quien se dedica a la gráfica y para quien no lo hace.

Las mejores características de Photoshop pueden fácilmente estar en GIMP

Por eso mismo, muchos optan por alternativas gratuitas y de código abierto en el mejor de los casos. Este tipo de aplicaciones, al no requerir obligatoriamente un pago por el uso, ven truncas sus posibilidades de desarrollo completo y se quedan siendo eternamente "programas buenos", o "viables", siempre a mitad de camino del nivel óptimo o deseado. Y así sí que no hay competencia que aguante.

El caso de GIMP es bastante particular. Es uno de los pocos editores gráficos libres en los que casi todos pueden coincidir no sólo en su enorme potencial, sino en la calidad de lo que ofrece en concreto. Y aún así, utilizándolo a cara lavada nos perdemos de decenas de extras que pueden hacer de GIMP un editor más cerca de los pesados (en todos los sentidos) del diseño, con todas las características que los mismos usuarios han extrañado y decidido incorporar, pues nadie sabe más de lo que falta que quien lo está necesitando.

En este artículo nos proponemos enseñarles algunos de los mejores agregados para GIMP que le dan un aire familiar al viejo Photoshop, o mejoran su rendimiento prácticamente al máximo. Una manera ingeniosa de salvar las diferencias que quizás por falta de recursos de quienes trabajan en editores de código abierto, no se pueden salvar de otra manera. Y si nisiquiera con plugins específicos ves a GIMP y Photoshop remotamente parecidos, al menos tu GIMP molará más que un ordenador con frigo incluído.

GIMP y sus plugins pueden volverse un aliado indispensable

Emula el entorno
Hay una manera bastante lógica de igualar un poco las posibilidades de GIMP y Photoshop, y es usar los mismos addons. Naturalmente, GIMP no posee el soporte necesario para trasladar las extensiones, a menos que pongas un intermediario a hacer la diplomacia entre ambos. Este es el caso de PSPI, que como todo, no es perfecto, pero es un buen comienzo para amortiguar el sufrimiento de no contar con las mismas herramientas. Si en cambio vas por el lado superficial de la cuestión, también puedes darle a GIMP una imagen más parecida a Photoshop desde el punto de vista de la organización de las ventanas y menúes. Aquí es donde entra acción GimpShop, que hará los ajustes pertinentes para que los menúes no se vean sueltos y desprolijos, aunque eso conlleve sacrificar un poco de la versatilidad de la pantalla.

Compensa las diferencias
Los usuarios ya entrenados en GIMP saben que, así como el programa presenta muchas comodidades, tiene algunos esenciales (sí vistos en Photoshop) que en cierto modo escandalizan por su funcionamiento precario o directamente por su ausencia. La situación puede mejorarse mucho instalando agregados infaltables, como Separate+ para arreglar el inconveniente del trabajo y conversión a CMYK, o Liquid Rescale y High Quality Rescale, que harán magia con el manejo de escalas y dimensiones. El soporte para formato .RAW puede solucionarse con UFRaw, en tanto las viejas dificultades de la conversión a formatos de imagen para la web pueden ser neutralizadas con Save for Web, que lo hará sin mayores problemas.

Anímate a animarlo
A esta altura no es una novedad, pero si todavía vives dentro de un frasco de dulce y no te has enterado, puedes crear y editar animaciones de calidad desde el mismo GIMP utilizando GAP (Gimp Animation Package), un paquete de plugins destinados a esto, en constante evolución. Hay algunos otros complementos para GIMP que permiten trabajar ampliamente en el campo de la animación, pero GAP se ha afianzado rápidamente como un irremplazable.

Explosiones y bolas de fuego creadas en GIMP desde cero

De Filtros, Capas y Patrones
Siempre teniendo en cuenta las opciones ofrecidas por Photoshop, bien puede parecerte que las capas, filtros y patrones de GIMP no estén completos o sean suficientes, de modo que hay varias maneras de agregar adicionales que hagan a tu trabajo tomar un rumbo más interesante. A nivel general puedes probar con Layer Effects, que incorpora una linda serie de scripts de capas con vista previa, o G'MIC, un plugin con varios filtros sencillos pero no menos útiles. Hay algunas versiones de filtros específicos de Photoshop que tienen su versión para GIMP (como Plastic Wrap, devenido en Plastiwrap para GIMP), aunque la mayoría están incluídos en paquetes de plugins que también pueden correrse con PSPI. Y si de patrones hablamos, lo difícil no es encontrarlos, sino que todos sean buenos. En este caso, puedes importar patrones de Photoshop que te gusten utilizando Photoshop Pattern Loader (¿Qué otra cosa podía hacer con ese nombre?).

Añade brochas y efectos
Hasta no hace mucho GIMP no era conocido por ser una aplicación fuerte en el campo del dibujo y pintura digital. Sin embargo los plugins sobre todo, lo han hecho un programa con mucha capacidad para despacharse con un poco de arte, desde los primeros escuetos bocetos hasta dibujos que nos dejan con la boca abierta. Agregar paquetes pinceles es importantísimo para lograr con precisión aquella idea original que uno tiene en mente, y además del soberbio Gimp Paint Studio del que ya hemos tenido oportunidad de hablar, todavía puedes encontrar en los rincones de la web diversas brochas que simulan sangre, estrellas, criaturas del mar, rayos, y tantísimas otras cosas . Para agregar efectos, podemos sugerirte el paquete Photo Effects, que no es otra que un rejunte de efectos necesarios (de textura, emparchado, color) listos para poner a prueba.

GIMP puede superar tus propias expectativas

Aprende cosas útiles y originales
El mundo de los plugins es tan vasto como se puedan imaginar. Mientras muchos de ellos arreglan problemas de compatibilidad o agregan herramientas que no estaban en el programa base, otros automatizan trabajos que quizás nos hubieran tomado mucho tiempo realizar a mano. De este tipo podemos llegar a encontrar cientos y nos llevaría mucho tiempo contarles cada una de las cosas que pueden hacer con ellos. Sin embargo, algunos que deberían probar son los que permiten realizar marcos para imágenes (tipo Extended Border, o Borders), agregar marcas de agua personalizadas (Watermark), eliminar las molestas fechas de las fotografías (Remove Timestamp), crear vistas panorámicas uniendo fotografías (Pandora), generar collages (Crear foto collage), o recrear texturas a partir de las tuyas (Resynthethizer). De seguro sabes de muchos otros agregados que proponen cosas nuevas, y si lo haces, ¡compártelo con nosotros!

Como ves, no es difícil optimizar GIMP para lograr resultados excepcionales y poder "reemplazar" total o parcialmente (según nuestras necesidades) a un programa del porte de Photoshop. De hecho, esto es un comienzo, ya que el contínuo desarrollo de agregados compensa sobremanera la lentitud de los avances realizados sobre el programa en sí, y probablemente pronto no queden cosas en las que alguien no haya pensado en mejorar e incorporar como un extra para GIMP. Por esto mismo, es más una cuestión de dar tiempo a la curiosidad propia y ajena para poner manos a la obra sobre lo que resta, y si con estas sugerencias GIMP no te ha parecido una alternativa óptima para tu trabajo de diseño, ¿Cuánto nos apostarías a que no lo será dentro de algunos pocos meses, el año que entra o el otro?

Por: anabella roman

Fuente:

http://www.neoteo.com/personaliza-gimp-y-reemplaza-photoshop-15812.neo


sábado, marzo 27, 2010

Mejores Albumes de Reggae de la Historia top 100

Los Mejores albumes de reggae de la historia
top 100

1. Catch a Fire - Bob Marley & the Wailers
2. Funky Kingston - Toots & the Maytals
3. The Harder They Come - Jimmy Cliff / Various
4. Blackheart Man - Bunny Wailer
5. Exodus - Bob Marley & the Wailers
6. Marcus Garvey - Burning Spear
7. Legalize It - Peter Tosh
8. Satta Massagana - The Abyssinians
9. East of the River Nile - Augustus Pablo
10. Burnin' - Bob Marley & the Wailers
11. Two Sevens Clash - Culture
12. Fire House Rock - Wailing Souls
13. Fever - Tenor Saw
14. War Ina Babylon - Max Romeo & The Upsetters
15. Super Ape - Lee "Scratch" Perry
16. Truths and Rights - Johnny Osbourne
17. Robin Hood - Barrington Levy
18. Africa Must be Free (by 1983) - Hugh Mundell
19. Soul Rebels - Bob Marley & the Wailers
20. Mister Yellowman - Yellowman
21. Heart of the Congos - The Congos
22. Equal Rights - Peter Tosh
23. King Tubby Meets Rockers Uptown - Augustus Pablo
24. Scientist Rids the World of the Evil Curse of the Vampires - Scientist
25. Big Ship - Freddie McGregor
26. Kamikazi Dub - Prince Jammy
27. Mundell - Hugh Mundell
28. Sinsemilla - Black Uruhu
29. Spread Out - Don Carlos
30. Night Nurse - Gregory Isaacs
31. Uprising - Bob Marley & The Wailers
32. Screaming Target - Big Youth
33. Rasta Communication - Keith Hudson
34. Mikey Dread - World War III
35. International Herb - Culture
36. Protest - Bunny Wailer
37. Wa-Do-Dem - Eek-A-Mouse
38. Fally Lover - Johnny Osbourne
39. Roast Fish Collie Breed & Corn Breed - Lee "Scratch" Perry
40. Dangerous Dub - King Tubby
41. Rasta Revolution - Bob Marley & the Wailers
42. Dread In Babylon - U-Roy
43. Any Which Way ...Freedom - Mutabaruka
44. The African Connection : Dub Me Crazy Part 3 - Mad Professor
45. Better Days - The Heptones
46. Slave Call - The Ethiopians
47. Day To Day Living - Don Carlos
48. Boom-Shak-A-Lack - Junior Reid
49. Police and Thieves - Junior Murvin
50. Face The Devil - Wailing Souls
51. Musical Shark Attack - I-Roy
52. Joseph's Coat of Many Colors - Dennis Brown
53. Go Away Dream - Delroy Wilson
54. Cool Ruler - Gregory Isaacs
55. The Toughest - Peter Tosh
56. In Fine Style - Half Pint
57. Raiders of the Lost Dub - Sly & Robbie
58. How The West Was Won - Toyan
59. Youth Man Vibrations - Echo Minott
60. Sunday Coming - Alton Ellis
61. Gunman Connection - Nicodemus
62. Stranded - Wailing Souls
63. Rastafari - Ras Michael
64. Nobody Move, Nobody Get Hurt - Yellowman
65. Youthman Skanking - Wayne Smith
66. Sex Education - Clint Eastwood
67. 12" of Pleasure - General Echo
68. Best Dressed Chicken In Town - Dr. Alimintado
69. With Lots of Extra - Sugar Minott
70. Heavyweight Dub Champion - Scientist
71. Black Woman & Child - Sizzla
72. Babylon Destruction - The Overnight Players
73. Dread Beat An' Old - Linton Kwesi Johnson
74. Revolutionary Dream - Pablo Moses
75. Steppin' - Marcia Griffiths
76. Extra Classic - Gregory Isaacs
77. Forward - The Abysinnians
78. Who Feels It Knows It - Rita Marley
79. The Seven Voyages of Captain Sinbad - Captain Sinbad
80. Rastaman Vibration - Bob Marley & the Wailers
81. Look How Me Sexy - Linval Thompson
82. Rivers of Babylon - The Melodians
83. Police In Helicopter - John Holt
84. Changes - Mighty Diamonds
85. Downpression - Michigan & Smiley
86. Conscious Party - Ziggy Marley & The Melody Makers
87. Glory to God - Ras Michael
88. Rocking Dolly - Cocoa Tea
89. Rebel Souls - Aswad
90. Rasta Philosophy - The Itals
91. Princess Lady - Lacksley Castell
92. Only A Woman - Judy Mowatt
93. Harder Than the Rest - Culture
94. Love Thy Neighbor - Ras Michael
95. Me and Jane - Bingy Bunny
96. To the Top - Aswad
97. Give Me Power - The Itals
98. Youthman Penitentiary - Edi Fitzroy
99. Party Time - The Heptones
100. Dub It To The Top - Yabby You

jueves, marzo 25, 2010

Ziggy Marley And Melody Makers

Ziggy Marley And Melody Makers Live Vol. 1 lyrics / Postman lyrics


Oh did you get that message yesterday

Jah sent I as your postman with your mail

Oh did you get your message yesterday

Jah sent I as your postman with your mail
Hey said are you getting are you getting are you getting Jah message

Are you getting are you getting are you getting Jah message

Said are you getting are you getting are you getting Jah message

And are you getting are you getting are y ou getting Jah message



Everything in life has ups and downs everything in life has its up and downs

So count you blessings count you blessing count you blessing you getting

count you blessing count you blessing count you blessing you getting



SOLO



Hey yea oh did you get your message yesterday

Jah sent I as your postman with your mail yes he did yea

Oh did you get your message yesterday

Appoint Ziggy as your postman with your mail

Hey said are you getting are you getting are you getting Jah message

Are you getting are you getting are you getting Jah message

And are you getting are you getting are you getting Jah message

Are you getting are you getting are you getting Jah message yea

Hey why do you look so sad and forsaken

When one door is closed many more is open

Many More Roads by Ky-Mani Marley

Many More Roads

Many more roads to trod
There’ll be many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have
There’ll be many more roads to trod
There’ll be many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have

Said I’m not looking for your fortune
Your fame, nor your glory
Ain’t trying to get your fancy things
Just a want a little airtime so I can play mine
Break mine, trying to make mine
To seat the one this life may bring
Now you see my friends they get me shady
My girl, she thinks I’m crazy
Don’t trust no shot after dark
And, for my life you can’t repay me
So anytime you face me
Be prepared for my dogs to bark

Many more roads to trod
Many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have

Some don’t understand me when I tell them that my life is for my children
So, I’m ready for anything
How could live your life with no love
Wrap your head in pure grudge
Now, I see you don’t know The King
So you may deceit and get the teachings
Refuse and get a beating
Hey, true love is from within
Now for the rest of my days
It’s Jah I will praise
Whoooa, now hear me sing

Many more roads to trod
There’ll be many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have
There’ll be many more roads to trod
There’ll be many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have
So

Fools rise from your slumber!
Praise Jah sun and Jah rain and Jah moon and Jah fyah now
Know the battle will be hotta!
But just give Jah your love and you will forever whoa
Fools rise from your slumber!
Praise Jah sun, Jah rain, Jah moon and Jah fyah now
Know the battle will be hotta!
But just give Jah your love and you will foriver

Many more roads to trod
There’ll be many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have

Said I’m not looking for your fortune
Fame, nor your glory
Ain’t trying to get your fancy things
Just a want a little airtime so I can play mine
Break mine, trying to make mine
To seat the one this life may bring
Now you see my friends they get me shady
My girl, she thinks I’m crazy
Whoa, don’t trust no shot after dark
And, for my life you can’t repay me
So anytime you face me
Be prepared for my dogs to bark

Many more roads to trod
Many mountains to cross
And though, you neglected, rejected and injected me
Still it’s only love I have
That’s all I have

Many more roads to cross
Many mountains, many mountains
You neglected, rejected and injected me
Still it’s only love I have. . .