Automatizando procesos de imágenes
20 mayo, 2008
![]()
Normalmente, cuando subimos una imagen lo primero que necesitamos es redimensionarla, para ello he añadido una librería, tengo el soporte de BMP hecho pero no lo considero relevante, al menos no tanto como el de JPEG,PNG y GIF, fundamentales en la web que si vienen con la clase…:)
Un ejemplo se puede ver en la misma clase.

Más sencillo no se puede oiga!
Instalar PHP+GTK2 en Linux
29 febrero, 2008
- Descargar todos los paquetes
Primero, descargar todos los siguientes paquetes y ten en cuenta el número de versión.- pkg-config-0.21 – una herramienta para llevar el control de las banderas de compilación necesarias para las librerías usadas por GTK+ [descargar]
- glib-2.12.4 – es el núcleo de librerías de bajo nivel que construyen las bases de GTK+ y GNOME [download]
- libpng-1.2.8 – librería de imagen PNG [download]
Elige la versión: .tar.bz2 que contienconfigure. Es más fácil de compilar. - freetype-2.2.1 – un motor de fuentes que provee de una “API” simple y fácil de usar para acceder al contenido de una fuente con un método uniforme, independientemente del formato del fichero. Soporta fuentes escalables en formatos como TrueType o “Type 1″ nativo. [download]
- fontconfig-2.4.0 – le da a Pango la estandarización para la localización de fuentes para poder encontrarlas por sus nombres [download]
- cairo-1.2.4 – una librería gráfica que soporta vectorización y composición de imágenes. Tanto Pango como GTK+ usan cairo para gran parte de su dibujado. [download]
Atención: Descarga la versión v1.2.4 (o mayor) directamente de cairographics.org. NO USES la que viene en el ftp ftp://ftp.gtk.org/pub/gtk/v2.10/dependencies/. ¡En mi PC ha causado muchísimos bugs! Encontrarás que gtk+ no te compila si usas cairo-1.2.0. Y el mensaje de error dice que hay un problema con pango, aunque realmente el problema viene de esta versión, cairo-1.2.0 que es la que causa el problema. Además, la v1.2.6. parece que también da algunos errores. - pango-1.16.4 – una librería para manejar texto internacionalizado [download]
- atk-1.9.1 – Herramientas de Accesibilidad [download]
- gtk+-2.10.12 – la base para php-gtk2 [download]
- libgnomeprint-2.12.1 – se necesita para gtksourceview [download]
- gtksourceview-1.6.0 – permite que se pueda mostrar código fuente con numeración automática y coloreado de sintaxis (se usa en el generador) [download]
- gtk+extra-2.1.1 – contiene un número de útiles widgets incluyendo: GtkSheet, GtkPlot y GtkDirTree [download]
- php-5.2.3 – php5 [download]
- php-mysql – módulo de MySQL para PHP5 [download]
- mysql – Servidor de base de datos MySQL [download]
- php-gtk-2.0.0beta – php-gtk2 [download]
- Librerías de desarrollo de las X-Window
Haz una rápida comprobación de tu configuración y asegúrate de que tienes las librerías de desarrollo de las X instaladas… - Variables de entorno necesarias
Si estás usando bash, establece las siguientes variables:
CPPFLAGS="-I/usr/local/include"Si usas csh o tcsh, añade lo siguiente a tu $HOME/.cshrc
LDFLAGS="-L/usr/local/lib"
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
LD_LIBRARY_PATH="/usr/local/lib"
PATH="/usr/local/bin:$PATH"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH LD_LIBRARY_PATH PATH
setenv CPPFLAGS "-I/usr/local/include"
setenv LDFLAGS "-L/usr/local/lib"
setenv PKG_CONFIG_PATH "/usr/local/lib/pkgconfig"
setenv LD_LIBRARY_PATH "/usr/local/lib"
setenv PATH /usr/local/bin:${PATH} - Compilar GTK+ primeroAtención: Para todos los paquetes, usa el ./configure por defecto. Los ficheros compilados irán a /usr/local/lib y /usr/local/include.
Orden de compilación:
- Compilar glib-2.12.4
tar xvzf glib-2.12.4.tar.gz
cd glib-2.12.4
./configure
make
sudomake install - Compilar libpng-1.2.12
bunzip2 libpng-1.2.12.tar.bz2
tar xvf libpng-1.2.12.tar
cd libpng-1.2.12
./configure
make
sudomake install - Compilar freetype-2.2.1
tar xvzf freetype-2.2.1.tar.gz
cd freetype-2.2.1
./configure
make
sudomake install - Compilar fontconfig-2.4.0
tar xvzf fontconfig-2.4.0.tar.gz
cd fontconfig-2.4.0
./configure
make
sudomake install - Compilar cairo-1.2.4
tar xvzf cairo-1.2.4.tar.gz
cd cairo-1.2.4
./configure
make
sudomake install - Compilar pango-1.16.4
tar xvzf pango-1.16.4.tar.gz
cd pango-1.16.4
./configure
make
su(entrar como root)
make install
Atención: Algunos de vosotros encontraréis errores en este punto. No preocuparse. Esto es porque necesitas volver como usuario normal (que no administrador), y las variables de entorno previamente definidas lo están para la cuenta de usuario,y no para root. Sólo tienes que volver a especificarlas como root y volver a lanzar“on more time” :] Todo debe de funcionar ahora.
make install
- Compilar atk-1.9.1
bunzip2 atk-1.9.1.tar.bz2
tar xvf atk-1.9.1.tar
cd atk-1.9.1
./configure
make
sudomake install - Compile gtk+-2.10.12
tar xvzf gtk+-2.10.12.tar.gz
cd gtk+-2.10.12
./configure
make
su(entrar como root)
make install
Atención: Aquí es posible que encontréis otro error, igual que antes,el problema es por las variables de entorno definidas como usuario que también necesitan ser declaradas como root, entonces se puede hacermake installde nuevo, y todo debe de ir bien.
Si gtk+ compila ok, debe de haber unagtk-demoen /usr/local/bin. Ahora puedes probar que gtk+-2.10.6 está funcionando si la ejecutas.
- Compilar glib-2.12.4
- Añadir componentes adicionales útiles — GtkSourceView y GtkExtraGtkSourceView permite visualizar código fuente con coloreado automático así como autonumeración de líneas.
- Primero compila libgnomeprint-2.12.1
bunzip libgnomeprint-2.12.1.tar.bz2
tar xvf libgnomeprint-2.12.1.tar
cd libgnomeprint-2.12.1
./configure
make
sudomake install - Ahora compila gtksourceview-1.6.0
tar xvzf gtksourceview-1.6.0.tar.gz
cd gtksourceview-1.6.0
./configure
make
sudomake install - Compila gtk+extra-2.1.1
tar xvzf gtk+extra-2.1.1.tar.gz
cd gtk+extra-2.1.1
./configure
make
sudomake install
- Primero compila libgnomeprint-2.12.1
- Compila php-5.2.3
- Primero necesitas compilar php5
tar xvzf php-5.2.3.tar.gz
cd php-5.2.3
./configure --prefix=/usr/local/php-5.2.3 --disable-cgi
make
sudomake install - Crear php.ini y añadir la extensión de php_gtk2.so:
echo extension=php_gtk2.so >> /usr/local/php-5.2.3/lib/php.ini
/usr/local/php-5.2.3/bin/php-config --extension-dir | xargs echo 'extension_dir=' >> /usr/local/php-5.2.3/lib/php.ini
- Primero necesitas compilar php5
- Compilar php-gtk-2.0.0
- Construir configure
tar xvzf php-gtk-2.0.0beta.tar.gz
cd php-gtk-2.0.0
./buildconf --with-phpize=/usr/local/php-5.2.3/bin/phpize - Compilar php-gtk2
Atención: No olvides usar “–enable-sourceview –enable-gtkextra” en tu configure para que se incluyan gtksourceview y gtkextra../configure --prefix=/usr/local/php-gtk-2.01 --enable-sourceview --enable-gtkextra --with-php-config=/usr/local/php-5.2.3/bin/php-config
make
sudomake install
- Construir configure
Para llamar más fácilmente a php-gtk, crea un enlace simbólico al binario:
ln -s /usr/local/php-5.2.3/bin/php /usr/bin/php-gtk2
Si tu variable de entorno PATH contiene /usr/bin, puedes ejecutar los scripts PHP usando:
php-gtk2 script.php
Extensiones de PHP: Librerías incluidas en zenphp
22 enero, 2008
Las librerías de zenphp son contenidos opcionales, no son necesarias en el núcleo,pero ayudan mucho a la hora de añadir funcionalidades a una aplicación. Primero se añadieron las librerías fundamentales como las de correo y gráficas (charts), ahora le toca el turno a las más avanzadas:
- Librería para crear PDF’s (ezPDF)
- Librería para crear ficheros de Excel (ExcelWriter)
- Librería para generar descargas de ficheros (zen_descarga)
- Librería para descargar contenido de Twitter
- Librería para crear ficheros comprimidos (createZip )
Pongo una captura de la primera:
<?php require("zenphp/zen.php"); if (!zen___carga_clase('Cezpdf')) die("No se pudo cargar la clase PDF"); $pdf =& new Cezpdf(); $pdf->selectFont('zenphp/contenido/fuentes/Avgardm.ttf'); $x=578; $r1=25; for ($xw=40;$xw>0;$xw-=3){ $tono=1.0-$xw/40*0.2; $pdf->setLineStyle($xw); $pdf->setStrokeColor($tono,1,$tono); $pdf->ellipse(50,750,$r1); $r1=$r1+$xw; } for ($xw=40;$xw>0;$xw-=3){ $tono=1.0-$xw/40*0.2; $pdf->setStrokeColor($tono,$tono,1); $pdf->setLineStyle($xw); $pdf->line($x,0,$x,842); $x=$x-$xw-2; } $pdf->ezText("Contenido PDFnn",24); $pdf->ezImage('zenphp/contenido/img/logo.jpg',0,0,'none','center'); $pdf->ezImage('zenphp/contenido/img/img05.jpg',0,0,'none','left'); $pdf->ezText("Prueba PDF",16); $pdf->ezStream(); ?>
La única que he escrito es zen_descarga, el resto son de otros autores,pero con licencia LGPL.
En un par de líneas las tenemos funcionando


