Hacer un cambio de tamano con MagickWand es algo sencillo, sin embargo solo encontre algunos ejemplos en C; llevarlo a PHP no es muy dificil pero de todas formas dejo aqui el codigo:
Lo que hace es cambiar el tamano de una imagen gif animada. La imagen escalada mantiene la animacion.
$resource = NewMagickWand();
MagickReadImage( $resource, 'coales.gif' );
MagickResetIterator($resource);
while( MagickNextImage($resource) != FALSE )
MagickScaleImage( $resource, 400, 200 );
MagickWriteImages($resource, 'copy.gif', TRUE);
?>
Cabe resaltar que en vez de MagickScaleImage() se pudo haber usado MagickResizeImage(), pero hice algunas pruebas y usando la primera funcion obtuve el tiempo de ejecuion:
real 0m17.027s
user 0m38.255s
sys 0m2.815s
Y para el segundo (MagickResizeImage)
real 0m21.899s
user 0m44.090s
sys 0m3.000s
Opte por usar el primero pues estoy desarrollando una aplicacion que no debe dejar esperando mucho tiempo a los usuarios y no importa mucho la calidad de imagen. Si se necesita calidad de imagen sugiero usar MagickResizeImage con algun filtro, la seleccion del filtro depende del uso.
http://www.imagemagick.org/Usage/filter/#best_filter
Aqui un articulo que habla de los filtros que se tienen en Magick
Para compilarlo manualmente (normalmente para slackware o gentoo) este articulo indica como hacerlo
www.ioncannon.net/php/75/how-to-compile-imagemagick-for-php-by-hand/
jueves, 7 de febrero de 2013
martes, 8 de enero de 2013
compile PHP con GD
Para poder usar imagenes con PHP debemos habilitar el GD que nos permitira trabajar con imagenes png, jpeg, gif, etc.
Para esto debemos compilar php con la siguiente linea de configuracion:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-libdir=lib64 --with-mysql --with-mysqli --with-curl=/usr/lib64 --with-curlwrappers --enable-mbstring --with-jpeg-dir=/usr --with-gd --with-png-dir=/usr
Esto es para un Slackware de 64bits. Tuve algunos problemas pues pese a colocar la opcion --with-jpeg-dir el phpinfo() no devolvia soporte para jpeg. Luego de compilar varias veces parece que habia que hacer ln a libjpeg que esta en /usr/lib64 a /usr/lib/ :
ln -s /usr/lib/libjpeg.so /usr/lib64/libjpeg
Lo cual no tiene sentido pues se coloca la opcion --with-libdir=lib64; sin embargo, algunos foros sugieren que es script de configuracion no toma en cuenta la opcion. Luego de hacer eso, un make clean y compilar de nuevo funciono.
Para esto debemos compilar php con la siguiente linea de configuracion:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-libdir=lib64 --with-mysql --with-mysqli --with-curl=/usr/lib64 --with-curlwrappers --enable-mbstring --with-jpeg-dir=/usr --with-gd --with-png-dir=/usr
Esto es para un Slackware de 64bits. Tuve algunos problemas pues pese a colocar la opcion --with-jpeg-dir el phpinfo() no devolvia soporte para jpeg. Luego de compilar varias veces parece que habia que hacer ln a libjpeg que esta en /usr/lib64 a /usr/lib/ :
ln -s /usr/lib/libjpeg.so /usr/lib64/libjpeg
Lo cual no tiene sentido pues se coloca la opcion --with-libdir=lib64; sin embargo, algunos foros sugieren que es script de configuracion no toma en cuenta la opcion. Luego de hacer eso, un make clean y compilar de nuevo funciono.
domingo, 2 de septiembre de 2012
Edicion basica de PDF
pdftk es un programa que permite hacer manipulaciones basicas a archivos pdf.
Para instalarlo lo podemos bajar de aqui
Luego lo descomprimimos y entramos al subdirectorio pdftk. Para compilarlo usamos make:
$make -f Makefile.Slackware-13.1
Podemos usarlo en diferentes scripts para manipular pdfs. Por ejemplo, para guardar en otro archivo pdf un rango de paginas usamos:
$pdftk in.pdf cat 8-46 output out.pdf
in.pdf es nuestro archivo de entrada, out.pdf es el archivo de salida que guardara el contenido del archivo de entrada desde la pagina 8 hasta la 46.
Para instalarlo lo podemos bajar de aqui
Luego lo descomprimimos y entramos al subdirectorio pdftk. Para compilarlo usamos make:
$make -f Makefile.Slackware-13.1
Podemos usarlo en diferentes scripts para manipular pdfs. Por ejemplo, para guardar en otro archivo pdf un rango de paginas usamos:
$pdftk in.pdf cat 8-46 output out.pdf
in.pdf es nuestro archivo de entrada, out.pdf es el archivo de salida que guardara el contenido del archivo de entrada desde la pagina 8 hasta la 46.
lunes, 16 de julio de 2012
PHP-MySQL en Fedora
PHP Fatal error: Call to undefined function mysql_connect() in /var/www/html/
Esa funcion es usada para conectarse a una base de datos MySQL. En fedora la extension de la libreria mysql.so no viene con PHP o con MySQL, esta debe ser instalado por separado:
yum install php-mysql
Luego se reinicia el apache:
httpd -k restart
Verificar en el log de error:
tail -f /var/log/httpd/error_log
Esa funcion es usada para conectarse a una base de datos MySQL. En fedora la extension de la libreria mysql.so no viene con PHP o con MySQL, esta debe ser instalado por separado:
yum install php-mysql
Luego se reinicia el apache:
httpd -k restart
Verificar en el log de error:
tail -f /var/log/httpd/error_log
viernes, 6 de julio de 2012
JDBC y MySQL en slackware 13.1
Es un largo tiempo sin publicar, me di de lleno a actividades que buscaban mejorar la universidad. Ahora retomo parcialmente las actividades que me apasionan.
Para permitir conexiones entrantes a una base de datos MySQL desde afuera (cualquier host diferente a localhost) se debe tener en cuenta lo siguiente:
1. Editar el archivo /etc/my.cnf y comentar la linea skip-networking
2. Editar el archivo /etc/rc.d/rc.mysqld y comentar la linea SKIP="--skip-networking"
Ambos parametros refieren a lo mismo, a la capacidad de evitar conexiones externas a la base de datos. Ambos deben ser comentados.
Finalmente un codigo de prueba, usando JDBC para verificar que ya tenemos conexion a la base de datos:
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db";
con = DriverManager.getConnection(url, "edson", "edson");
st = con.createStatement();
rs = st.executeQuery("SELECT * FROM packets");
while(rs.next()){
System.out.println(rs.getInt(1));
}
catch (SQLException e) {
e.printStackTrace();
}
Resumidamente, se registra el driver, se crea la conexion y se ejecuta un query, cuyo resultado es impreso en la salida estandar.
Para permitir conexiones entrantes a una base de datos MySQL desde afuera (cualquier host diferente a localhost) se debe tener en cuenta lo siguiente:
1. Editar el archivo /etc/my.cnf y comentar la linea skip-networking
2. Editar el archivo /etc/rc.d/rc.mysqld y comentar la linea SKIP="--skip-networking"
Ambos parametros refieren a lo mismo, a la capacidad de evitar conexiones externas a la base de datos. Ambos deben ser comentados.
Finalmente un codigo de prueba, usando JDBC para verificar que ya tenemos conexion a la base de datos:
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db";
con = DriverManager.getConnection(url, "edson", "edson");
st = con.createStatement();
rs = st.executeQuery("SELECT * FROM packets");
while(rs.next()){
System.out.println(rs.getInt(1));
}
catch (SQLException e) {
e.printStackTrace();
}
Resumidamente, se registra el driver, se crea la conexion y se ejecuta un query, cuyo resultado es impreso en la salida estandar.
miércoles, 17 de agosto de 2011
emessenger 112 on slackware
Para que esta webcam funcione correctamente hay que descargar e instalar v4l de http://freshmeat.net/projects/libv4l
luego, para probar la camera :
$ LD_PRELOAD=/usr/lib64/libv4l/v4l2convert.so qv4l2
o la ubicacion que tenga la libreria v4l. Funciona con kopete, skype y otros
luego, para probar la camera :
$ LD_PRELOAD=/usr/lib64/libv4l/v4l2convert.so qv4l2
o la ubicacion que tenga la libreria v4l. Funciona con kopete, skype y otros
lunes, 25 de octubre de 2010
MySQL on Slackware
Para tener un servidor MySQL corriendo en Slackware es necesario hacer un par de cosas adicionales a lo que dice los archivos de configuracion de MySQL, aqui lo necesario para levantar MySQL:
# chown mysql /var/lib/mysql/mysql/*
# chown mysql /var/lib/mysql/*
# mysql_install_db
# chown -R mysql:mysql /var/lib/mysql
# /etc/rc.d/rc.mysqld start
con eso queda listo, solo hay que cambiar el password del root de esta manera:
# chown mysql /var/lib/mysql/mysql/*
# chown mysql /var/lib/mysql/*
# mysql_install_db
# chown -R mysql:mysql /var/lib/mysql
# /etc/rc.d/rc.mysqld start
con eso queda listo, solo hay que cambiar el password del root de esta manera:
Suscribirse a:
Comentarios (Atom)