Publi

  • Cómo crear ventanas semitransparentes en Gtk+-3.0 con GtkMM

    Screenshot 17-02-2016-070256
    Es algo que está muy chulo, y puede hacer que la experiencia de usuario de nuestras aplicaciones sea mucho mejor, además de dar un punto friki si queremos intercalar información de fondo, o queremos hacer una animación, una ventana splash chula mientras arranca nuestro programa, etc.

    Lo que tenemos que hacer es que nuestra ventana se pinte en un contexto RGBA (rojo, verde, azul, alpha), donde alpha es nuestro valor de opacidad.… Leer artículo completo

  • Herramientas Open Source para colorear código

    Aquí muestro una recopilación de herramientas que nos ayudarán a mostrar código fuente con colores, y así poder enseñar orgullosos nuestro código, bueno más que nada porque se ve todo más claro y se puede identificar mejor a qué corresponde cada palabra que en texto plano sin color.
    Dependiendo del proyecto que tengamos entre manos nos conviene más utilizar una herramienta online u offline, o si tenemos un blog, mejor utilizar una herramienta específica para blogs.… Leer artículo completo

  • Coloreando código con GeSHi

    geshiCuando queremos publicar código fuente por Internet (como en esta web), debemos hacer que los usuarios se sientan bien con el código y que sea agradable de leer. Además del indentado, es de agradecer la introducción de colores, que separen palabras clave, identifiquen cadenas, funciones de biblioteca, funciones propias, números y demás elementos que encontramos en un fragmento de código.

    Por Internet, podemos encontrar una biblioteca muy útil para este propósito: GeSHi.… 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
  • 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
  • Jugando con ImageMagick (II): Color y rotación

    Sigo con la serie de posts sobre ImageMagick, anteriormente estuvimos viendo cómo podemos redimensionar, añadir y quitar bordes a la imagen, cambiar y ecualizar el espacio de color, añadir efectos y capturar de la pantalla. Ahora veremos más cosas relacionadas con el color:

    Tocando los canales de color

    hamburgueson_33Imagina que queremos aplicar un efecto sólo en un canal, por ejemplo, un efecto radial-blur sólo en el canal rojo:

    $ convert -channel red -radial-blur 30 hamburgueson.jpg hamburgueson_rojo.jpg

    Donde 30 es el radio del emborronamiento (blur) radial.… Leer artículo completo

  • Jugando con ImageMagick (I): Dimensiones, captura, color y efectos

    A menudo es necesario hacer una manipulación básica de imágenes y da mucha pereza ejecutar GIMP u otro editor de imágenes para una tontería; e incluso a veces necesitamos modificar gran cantidad de imágenes y necesitamos automatizar el proceso:

    Ejecución

    Aunque ImageMagick, que seguro que lo encontráis en los repositorios de vuestra distribución favorita, da mucho más de sí, aquí veremos ejemplos con convert, import y mogrify

    Redimensionado de imágenes

    hamburgueson_2$ convert -resize [dimensión/porcentaje] origen destino

    Por ejemplo para redimensionar con un ancho de 320 pixels:

    $ convert -resize 320 hamburgueson.jpg hamburgueson_mini.jpg

    De esta forma, si especificamos la altura, se ignorará, ya que convert intentará mantener el aspecto de la imagen.… Leer artículo completo