Comprimir imágenes PNG con OptiPNG

Sea cual sea vuestra motivación o necesidad, es muy posible que os hayáis encontrado con este caso: comprimir y optimizar imágenes en formato PNG de una manera rápida y sencilla.

La aplicación que os propongo para llevar a cabo esta tarea es OptiPNG. Para instalarla desde Debian y derivados (Ubuntu) bastará con abrir un terminal:

ahornero@6581-D:~$ apt-get install optipng

Bien, bastará con eso para instalarlo. Para usarlo, lo primero hago un backup de mi imagen antes de procesarla, de esta forma conservaré el original

ahornero@6581-D:~$ cp prueba.{png,bak.png}

Y ahora sí, lanzo OptiPNG:

ahornero@6581-D:~$ optipng prueba.png

Comprobad el tamaño y calidad de la imagen, veréis como por un lado ocupa menos y no tendremos pérdida alguna en la calidad.

¿Y si quiero aplicarlo a varios archivos? Fácil también: 

Leer más » 5 Comentarios

Crear una imagen ISO desde un CD o un DVD en Ubuntu

La posibilidad de usar imágenes de CD o DVD directamente sin tener que quemarlas es una gran opción en mucho casos: ahorramos el disco, preservamos de paso el medio ambiente y tenemos un fichero que podemos mover cómo queramos.

Si tenemos un CD o DVD y queremos convertirlo en imagen por cualquier motivo, en cualquier distribución de Linux, el procedimiento será casi inmediato. Todos lo que comento aquí se hace desde la terminal.

Crear imagen para un DVD

Directamente hacemos:

dd if=/dev/dvd of=/home/usuario/Escritorio/dvd.iso

Crear imagen para un CD

dd if=/dev/cdrom of=/home/usuario/Escritorio/cd.iso

Crear imagen para una carpeta

Si tenemos los datos en una carpeta:

mkisofs -o /destino/cd.iso /carpeta_para_imagen

Leer más » 7 Comentarios

Cómo obtener la anchura y la altura de las imágenes destacada de una entrada en WordPress

Cuando estamos diseñando un tema en WordPress probablemente tengamos que tratar con imágenes destacadas en las entradas, las llamadas Post Thumbnails. Las imágenes como tal tienen una serie de características, pero desde el punto de vista del diseño las que nos importa más son sus dimensiones: ancho y alto. ¿Cómo saberlas? Aquí os lo cuento.

Dentro del loop usaremos este extracto de código:

$imgdata = wp_get_attachment_image_src
  (get_post_thumbnail_id(), 'thumbnail');
$imgurl = $imgdata[0]; // UTL
$imgwidth = $imgdata[1]; // anchura
$imgheight = $imgdata[2]; // altura

Leer más » 1 Comentario

Instalar soporte PHP-GD en un servidor Apache

Siguiendo un poco el hilo de mis últimas entradas dónde se propone eliminar PostgreSQL del arranque o explicamos cómo configurar la interfaz de red por consola, entre otras configuraciones sobre un servidor, vamos a ver cómo instalar soporte PHP-GD en un servidor Apache.

Para ello, abrimos un terminal. Nos logueamos como superusuario, o a través del comando sudo, lanzamos las siguientes instrucciones:

root@6581-Server:~# apt-get install php5-gd

Se instalará junto con las dependencias:

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
libgd2-xpm
Suggested packages:
libgd-tools
The following packages will be REMOVED:
libgd2-noxpm
The following NEW packages will be installed:
libgd2-xpm php5-gd
0 upgraded, 2 newly installed, […]

Automáticamente debería de haberse reiniciado el servidor para que los cambios surtan efecto, pero si no ha sido así, simplemente invocamos:

root@6581-Server:~# /etc/init.d/apache2 restart

Y finalmente. ¿Cómo comprobar que nuestra instalación de PHP ya soporta PHP-GD?

php5 -i | grep -i –color gd

Leer más » 1 Comentario

Aplicaciones livianas para Linux – Visores de imágenes

A continuación nuestra propuesta de visores de imágenes livianos para Linux. Se aceptan sugerencias, siempre que usen pocos recursos:

  • Feh usa la librería imlib2.
  • GPicView hecho por los desarrolladores de LXDE.
  • GQview nos permite movernos y visualizar las imágenes a través de un árbol de directorios.
  • Geeqie  es un fork de GQview con funcionalidad añadida. Soporta varios formatos RAW.
  • Mirage hecho en GTK+. Este es el que uso, me encanta.
  • Ristretto muy parecido al anterior. Para entornor Xfce, aunque complatible con Gnome.
  • QIV (acrónimo de Quick Image Viewer) visor de imágenes gdk/Imlib.
  • Viewnior minimalista y rápido. En GTK2.

Leer más » 1 Comentario

Montar imágenes que no son ISO: NRG, BIN/CUE, MDF/MDS, IMG, DAA en Linux

Si hablamos la semana pasada de cómo montar una imagen ISO de forma gráfica y desde la consola, hoy vamos a hablar de cómo montar las demás imágenes en Linux. Aunque no sean las estándares, son muy frecuentes y muy comunes o si no preguntadle a todos los que usen Nero, Alcohol 120% o cualquier software de grabación similar propietario.

Imágenes NRG de Nero

Las imágenes NRG pueden montarse sin problemas directamente desde la terminal haciendo:

$ sudo mkdir /mnt/punto/de/montaje
$ mount -t iso9660 -o loop,offset=307200 imagen.nrg /mnt/punto/de/montaje

El resto de formatos no puede montarse directamente, por lo que siempre haremos el siguiente proceso:

  1. Convertir la imagen a estándar ISO
  2. Montar la imagen en ISO: en modo texto o mediante interfaz gráfico

Veamos uno a uno los conversores de los que disponemos.

Leer más » 1 Comentario

Montar una imagen ISO desde la terminal

Para evitar tener que grabar un CD, con todo lo que conlleva, siempre es aconsejable acostumbrarnos a montar las imágenes de los mismos. En Linux, para montar una imagen ISO directamente desde la terminal sólo tendremos que realizar los siguientes pasos.

Comenzamos creando el punto de montaje:

$ sudo mkdir /media/cdvirtual

Por si acaso, cargamos el módulo loop al kernel, por si no estaba aún cargado:

$ sudo modprobe loop

Finalmente, montamos la imagen:

Leer más » 5 Comentarios

Reemplazar el icono del menú de Gnome

Lo que os propongo aquí es un pequeño tutorial para cambiar el icono del menú de Gnome, en mi caso he usado una flecha roja hacia abajo que he descargado desde iconfinder.com:

Para ello abrimos un terminal:

  • Hacemos una copia de seguridad del icono actual:

ahornero@6581-D:~$ mv /usr/share/icons/gnome/24×24/places/start-here.png /usr/share/icons/gnome/24×24/places/start-here.png.bak

  • Ponemos el nuestro aquí, tened en cuenta que ha de tener las mismas proporciones (24×24 píxeles):

ahornero@6581-D:~$ sudo cp ~/Downloads/nuevo_icono.png /usr/share/icons/gnome/24×24/places/start-here.png

  • Ahora refrescamos la caché:

ahornero@6581-D:~$ sudo gtk-update-icon-cache /usr/share/icons/gnome

Leer más » 4 Comentarios

Curso programación de videojuegos con SDL – Cargando imágenes con SDL

Ya hemos visto cómo cargar una ventana simple con SDL y ponerle título. No está mal para comenzar, pero estaréis deseando hacer algo más. Lo siguiente que haremos será cargar una imagen en pantalla operación que se repite multitud de veces en cualquier juego a la hora de cargar tanto fondos, como personajes.

Para carga una imagen haremos lo siguiente:

  1. Declaramos un puntero a una variable del tipo SDL_Surface: SDL_Surface *jugador;
  2. Declaramos una variable del tipo SDL_Rect:SDL_Rect posicion;
  3. Cargamos el mapa de bits: jugador=SDL_LoadBMP(“avion.bmp”);
  4. Asignamos la posición, mediante sus coordenadas X e Y:
    posicion.x=320;
    posicion.y=400;
  5. Acoplamos la imágen al “screen”: SDL_BlitSurface(jugador, NULL, screen, &posicion);
  • jugador: superficie (SDL_Surface) que queremos insertar o de orígen.
  • NULL: indica que queremos insertar toda la imagen.
  • screen: superficie dónde se va a insertar.
  • posicion: la posición dónde se colocará.

Ya tenemos la imagen cargada. El problema de cargarla de esta manera es que no tenemos transparencias y tendríamos la imagen nuestra, avión sobre fondo blanco, apareciendo sobre el fondo, azul (imitando al mar), por lo que alrededor del avión quedaría un recuadro blanco que sin duda quedaría muy mal. Para eliminar este fondo blanco y hacer que SDL lo cargue transparente hacemos lo siguiente:

  1. Definimos una máscara con el color RGB del color a hacer transparente. En este caso el blanco, RGB(255,255,255): #define MASK 255, 255, 255
  2. Hacemos transparentes los píxeles blancos: SDL_SetColorKey (jugador, SDL_SRCCOLORKEY, SDL_MapRGB (jugador->format, MASK));
  • jugador: la superficie en la que aplicar el efecto.
  • SDL_SRCCOLORKEY: Indicar hacer transparencia.
  • SDL_MapRGB jugador->format: formato de la imagen
  • SDL_MapRGB MASK: máscara, en realidad son tres parámetros, (r,g,b).

De esta manera conseguimos un resultado así:

Veamos el código al completo:

#include <stdio.h> #include <stdlib.h> #include <SDL.h> #define MASK 255, 255, 255 int main() { SDL_Surface *screen; SDL_Surface *fondo; SDL_Surface *jugador; SDL_Event event; int terminar=0; SDL_Rect posicion; int i, j; if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("No se pudo inicializar SDL: %s\n", SDL_GetError()); exit(1); } fondo = SDL_LoadBMP("fondo.bmp"); jugador = SDL_LoadBMP("avion.bmp"); SDL_SetColorKey (jugador, SDL_SRCCOLORKEY, SDL_MapRGB (jugador->format, MASK)); screen = SDL_SetVideoMode( 640, 480, 16, SDL_HWSURFACE ); if( screen == NULL ) { printf( "Error al entrar a modo grafico: %s\n", SDL_GetError() ); SDL_Quit(); return -1; } SDL_WM_SetCaption( "Moviendo nuestro avion", " Moviendo nuestro avion" ); for (i=0; i<10; i++) for (j=0; j<10; j++) { posicion.x=64*i; posicion.y=48*j; SDL_BlitSurface(fondo, NULL, screen, &posicion); } posicion.x=320; posicion.y=400; SDL_BlitSurface(jugador, NULL, screen, &posicion); SDL_Flip(screen); while(terminar == 0) { while ( SDL_PollEvent(&event) ) { if ( event.type == SDL_KEYUP ) terminar = 1; } } SDL_Quit(); return 0; } read more

Leer más » 13 Comentarios

Instalar PHP GD en Ubuntu

Las librerías GD de PHP son la más completa lista de funciones integradas en un mismo paquete para el procesamiento y tratamiento de imágenes con este lenguaje de programación.

Anteayer fue a echar mano de estas para crear unos thumbnails de unas imágenes dentro de un directorio, más concretamente a través de la función imagecopyresized, pero me di cuenta que no podría hacer uso de esta sin antes instalar el módulo de las funciones GD en PHP.

En mi caso estaba usando una distribución Ubuntu Linux. No debe ser diferente en el resto de distribuciones basadas en Debian. Así, para instalarlo me bastó con abrir un terminal y: read more

Leer más » 2 Comentarios