Generación de imágenes gráficas portátiles RGBA a través de C++

Las imágenes PNG son capaces de admitir varias propiedades de imagen, como colores múltiples, grado de transparencia, corrección gamma, compresión sin pérdidas, etc. Las imágenes PNG se utilizan ampliamente y se prefieren para numerosos tipos de imágenes.

Para trabajar con archivos PNG, utilizaremos la biblioteca C++ de código abierto contenedor independiente de la plataforma PNGwriter para libpng (biblioteca de referencia PNG), una de las bibliotecas más ricas en funciones, escrita en C . La biblioteca PNGwriter funciona en Linux, Unix, macOS y Windows. Sus funciones admitidas incluyen la apertura de imágenes PNG existentes, el trazado y la lectura de píxeles en los espacios de color RGB, HSV y CMYK, formas básicas, escalado, interpolación bilineal, soporte completo de texto rotado y suavizado TrueType y curvas Bezier. Requiere la biblioteca FreeType2 para soporte de texto. Para obtener más documentación y bibliotecas, visite SourceForge , PNGwriter-github .

Cómo se generan las imágenes:
los píxeles son la unidad más pequeña que genera colectivamente una imagen. Cada píxel tiene un valor numérico que representa un color. A continuación se muestran los pasos:

  1. Elegimos el alto y ancho deseado de la imagen.
  2. En la deseada, iteramos y aplicamos colores píxel a píxel.
  3. Esta colección de píxeles se almacena luego con la extensión y las propiedades adecuadas, generando así una imagen.

Generación de imagen mediante la aplicación de colores:

A continuación se muestra el programa que genera las imágenes gráficas del portal RGBA en C++:

// C++ program to generate PNG images
  
#include <iostream>
#include <pngwriter.h>
#include <string>
  
// Function to generate PNG image
void generate_PNG(int const width,
                  int const height,
                  std::string filepath)
{
  
    // Print the filepath
    cout << endl
         << "Filepath: "
         << filepath.c_str();
  
    // Generate the flag
    pngwriter flag{ width, height, 0,
                    filepath.data() };
  
    // Calculate sizes
    int const size = width / 3;
  
    // Fill the squares
    flag.filledsquare(0, 0, size,
                      2 * size, 0,
                      0, 65535);
  
    flag.filledsquare(size, 0, 2 * size,
                      2 * size, 0,
                      65535, 65535);
  
    flag.filledsquare(2 * size, 0,
                      3 * size, 2 * size,
                      65535, 0, 65535);
  
    // Close the flag
    flag.close();
}
  
// Driver code
int main()
{
    // Given width and height
    int width = 300, height = 200;
  
    // Filepath
    std::string filepath;
  
    // Function call to generate PNG image
    generate_PNG(width, height, filepath);
  
    return 0;
}

Producción:

Explicación:
El programa anterior toma ancho, alto y dirección de archivo con un nombre de archivo. La clase pngwriter representa una imagen PNG. El constructor de la imagen PNG nos permite establecer el ancho y la altura en píxeles, un color de fondo y la ruta al archivo donde se debe guardar la imagen. Como se ilustra en el código anterior, simplemente organizamos tres colores sólidos uno al lado del otro y para eso, usamos la función fillsquare() que ha tomado el valor de las coordenadas xy desde las posiciones de inicio hasta el final y los valores de color (R, G, B ) . Cuando la imagen se guarde en la memoria, llame al método close() para guardarla en un archivo de disco.

Publicación traducida automáticamente

Artículo escrito por sohammalviya65 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *