Publi

  • Transferir una imagen de disco a través de la red. Bash y más


    Foto: nrkbeta Flickr (CC-by)

    Todo surgió cuando quería cambiar el disco duro de mi mediacenter. El disco duro lo tenía en mi ordenador de trabajo y el mediacenter (que hace también las veces de router/firewall y demás) no podía desenchufarlo. Es verdad que para un disco duro montado y activo no es la mejor forma, pero ya puestos, quería hacer el experimento, por lo que elegí algunas particiones que no tenían demasiada actividad (que luego fsck se encargue :))

    Para lo que sí puede servir es para crear imágenes de discos duros y transmitirlas a un servidor central para su almacenaje, ya sea por problemas de sitio, que no tengas espacio suficiente en algún dispositivo externo, o porque por seguridad se quiere transmitir a un servidor remoto o también, porque se tengan que instalar muchos ordenadores con configuraciones parecidas y, una vez configurado uno (ya sea con Windows, o cualquier UNIX), los configuramos todos desde aquí.… Leer artículo completo

  • Crear mapas HTML5 interactivos con RaphaelJS


    Vivimos en pleno auge del HTML5 y es que con esta tecnología se pueden hacer cosas muy interesantes, de forma muy rápida, elegante y multiplataforma sin necesidad de recurrir a herramientas de terceros como Flash, y eso está muy bien. Personalmente nunca me gustó Flash, así que, tenemos muchas cosas chulas por hacer.

    Hace unos días, para un pequeño proyecto surgió la idea de crear un mapa interactivo de municipios, la idea está bien y hay mucho trabajo que hacer.… Leer artículo completo

  • Automatizar efectos para crear vídeos en GIMP con script-fu

    Tal vez hayamos utilizado GIMP es más de una ocasión, es un gran programa para retoque fotográfico en Linux. Por otro lado, para Linux no existen demasiados programas para creación de vídeo y efectos especiales, y los que hay son muy limitados.

    Por eso, se puede dar el caso de que quisiéramos aplicar un efecto de GIMP dentro de un vídeo, pero no sólo en un fotograma estático (que importamos la imagen dentro del vídeo y listo), sino en una animación, modificando ligeramente el comportamiento del efecto fotograma a fotograma.… Leer artículo completo

  • Generar texto e implantarlo en una imagen desde PHP

    En ocasiones, se puede presentar la necesidad de introducir en nuestros proyectos una imagen cuyo contenido sea un texto, y sobre todo necesitamos integrarlo dentro de nuestro contenido, intentando que no se note que es una imagen, a no se que seleccionen el contenido para copiarlo.

    Una de las principales utilidades de esto es evitar el SPAM al escribir nuestra dirección de e-mail en una web. Muchos clientes prefieren enviar un e-mail en lugar de utilizar un formulario de contacto y tenemos que satisfacerles, sin arriesgar la seguridad de nuestro sistema, en el sentido de que hay cientos de motores que se dedican a rastrear webs en busca de direcciones de e-mail (lo cual es muy sencillo de hacer con expresiones regulares, por ejemplo).… Leer artículo completo

  • Salvando archivos de imagen BMP en C

    linux_detergenteHace tiempo hablé de la lectura de archivos BMP en C y puse algún ejemplo. Pero falta lo más importante, poder guardar de nuevo las imágenes, tras aplicar un filtro o generar una imagen desde cero y exportarla. Para ello he creado la siguiente función:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    void SaveBMP(char *filename, bmpInfoHeader *info, unsigned char *imgdata)
    {
      bmpFileHeader header;
      FILE *f;
      uint16_t type;
     
      f=fopen(filename, "w+");
      header.
    Leer artículo completo
  • Recopilación de soluciones para los retos de #tuentiContest . Challenge #18

    Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).

    Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que hacerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.… Leer artículo completo

  • Recopilación de soluciones para los retos de #tuentiContest . Challenge #14

    Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).

    Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.… Leer artículo completo

  • Leyendo archivos de imagen en formato BMP en C

    n1214332197_30461081_3311160

    Hoy vamos a practicar a leer una imagen desde un archivo BMP desde C. Aunque existen muchas APIs disponibles que son capaces de hacerlo, y mucho mejor que lo que voy a plantear (puesto que nos limitaremos a BMPs sin compresión y a 24bits por pixel), es un buen ejercicio para leer archivos con un formato especificado y documentado.

    Para este tipo de archivos, tendremos dos cabeceras disponibles, la primera será la cabecera de fichero, y la segunda, la cabecera de información de imagen, que las definimos aquí:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    typedef struct bmpFileHeader
    {
      /* 2 bytes de identificación */
      uint32_t size;        /* Tamaño del archivo */
      uint16_t resv1;       /* Reservado */
      uint16_t resv2;       /* Reservado */
      uint32_t offset;      /* Offset hasta hasta los datos de imagen */
    } bmpFileHeader;

    typedef struct bmpInfoHeader
    {
      uint32_t headersize;      /* Tamaño de la cabecera */
      uint32_t width;               /* Ancho */
      uint32_t height;          /* Alto */
      uint16_t planes;                  /* Planos de color (Siempre 1) */
      uint16_t bpp;             /* bits por pixel */
      uint32_t compress;        /* compresión */
      uint32_t imgsize;     /* tamaño de los datos de imagen */
      uint32_t bpmx;                /* Resolución X en bits por metro */
      uint32_t bpmy;                /* Resolución Y en bits por metro */
      uint32_t colors;              /* colors used en la paleta */
      uint32_t imxtcolors;      /* Colores importantes.
    Leer artículo completo
  • Limitando recursos en ImageMagick


    A veces, utilizar ImageMagick puede ser horrible, sobre todo porque en ocasiones, se come todos los recursos de nuestro sistema, al procesar imágenes grandes, múltiples imágenes, vídeo, etc… en ocasiones puede que el OOM Killer de Linux detenga la tarea, y puede que mientras procesamos las imágenes, necesitemos el ordenador para algo.

    NOTA: Utilizaré convert para poner ejemplos de cómo utilizar esta herramienta, pero estos consejos valen para todos los programas de tratamiento de imagen que componen imagemagick: convert, mogrify, montage…

    Bien, ImageMagick tiene opciones para modificar cuánta memoria va a acaparar.… Leer artículo completo

  • Vídeo digital: Secuencias de imágenes

    Esta vez voy a presentar algunos ejemplos de uso de ffmpeg con secuencias de imágenes. Para empezar a trabajar con vídeo digital desde GNU/Linux.

    Crear vídeo a partir de una secuencia de imágenes

    Es una buena técnica el hecho de trabajar con secuencias de imágenes para crear un vídeo. Podemos, por ejemplo utilizar la potencia de Imagemagick (I, II, III, IV) para modificar el color de la imagen, etiquetarlas o darle algún tratamiento.… Leer artículo completo