Portable Network Graphics


PNG

It is an extensible file format for the lossless, portable, well-compressed storage of raster images. PNG provides a patent-replacement for GIF. Indexed-color, grayscale, and true color images are supported. PNG also supports an optional alpha channel. The two most common libraries to process PNGs are: libpng (requires the zlib library) and lodepng.
Es un formato para archivos para almacenar imágenes sin perdida, portable y comprimidas. PNG proporciona una opción para reemplazar a GIF. Se soportan los formatos: un índice para color, escala de grises e imágenes de color verdadero. PNG también suporta un canal opcional para transparencia. Las dos librerias mas comunes para procesar PNGs son: libpng (requirere la libreria zlib) y lodepng.

Problem 1
Download from the Internet the files: lodepng.h and lodepng.cpp. The creator of this library is Lode Vandenne. This library does not require any other libraries.
Descargue de la Internet los archivos: lodepng.h y lodepng.cpp. El creador de esta librería es Lode Vandenne. Esta librería no requiere ninguna otra librería.

Problem 2
Cree a Wintempla dialog applicaction called LodeTest. After creating the project, copy the files lodepng.h and lodepng.cpp in the proyect folder as shown.
Cree una aplicación de dialogo usando Wintempla llamada LodeTest. Después de crear el proyecto, copie los archivos lodepng.h y lodepng.cpp en la carpeta del proyecto como se muestra.

ProjectFolder

Step A
Open Solution Explorer, select the project and open the Context Menu using the right button of the mouse.Then, select Add > Existing item. Finally, select the files lodepng.h and lodepng.cpp.
Abra Solution Explorer, seleccione el proyecto y abra el menú de contexto usando el botón derecho del raton. Entonces, seleccione Add > Existing Item. Finalmente, seleccione los archivos lodepng.h y lodepng.cpp.

AddExisting

Step B
Edit the LodeTest.h file by including the lodepng.h file as shown.
Edite el archivo LodeTest.h incluyendo el archivo lodepng.h como se muestra.

LodeTest.h
#pragma once //______________________________________ LodeTest.h
#include "Resource.h"
#include "lodepng.h"
class LodeTest: public Win::Dialog
{
...
};


Step C
Edit the LodeTest.cpp file as shown.
Edite el archivo LodeTest.cpp como se muestra.

LodeTest.cpp
...
void LodeTest::Window_Open(Win::Event& e)
{
     wstring text;
     //________________________________________________ 1. Prompt the user for the filename
     Win::FileDlg dlg;
     dlg.SetFilter(L"PNG files (*.png)\0*.png\0\0", 0, L"png");
     if (dlg.BeginDialog(hWnd, L"Open", false) != TRUE) return;
     //________________________________________________ 2. Load the file data
     std::vector<unsigned char> filedata;
     if (Sys::FileAssistant::Load(dlg.GetFileNameFullPath(), filedata) == false)
     {
          this->MessageBox(L"Unable to load PNG file", L"LodeTest", MB_OK | MB_ICONERROR);
          return;
     }
     //________________________________________________ 3. Decode to obtain pixels
     std::vector<unsigned char> imagePixels;
     unsigned int width, height;
     unsigned int error = lodepng::decode(imagePixels, width, height, filedata);
     if (error != 0)
     {
          Sys::Convert::StringToWstring(lodepng_error_text(error), text);
          this->MessageBox(text, L"LodeTest", MB_OK | MB_ICONERROR);
          return;
     }
     //________________________________________________ 4. Display the image size
     Sys::Format(text, L"Width = %d\r\nHeight = %d", width, height);
     this->MessageBox(text, L"LodeTest", MB_OK | MB_ICONINFORMATION);
     //________________________________________________ 5. Display the first pixel RGBA
     Sys::Format(text, L"Red = %d\r\nGreen = %d\r\nBlue = %d\r\nAlpha = %d",
          (int)imagePixels[0], (int)imagePixels[1], (int)imagePixels[2], (int)imagePixels[3]);
     this->MessageBox(text, L"LodeTest", MB_OK | MB_ICONINFORMATION);
     //________________________________________________ 6. Display the second pixel RGBA
     Sys::Format(text, L"Red = %d\r\nGreen = %d\r\nBlue = %d\r\nAlpha = %d",
          (int)imagePixels[4], (int)imagePixels[5], (int)imagePixels[6], (int)imagePixels[7]);
     this->MessageBox(text, L"LodeTest", MB_OK | MB_ICONINFORMATION);
}


Step D
Compile and run the program. You will need a PNG image file to run the program.
Compile y ejecute el programa. Usted va a necesitar una imagen PNG para correr el programa.

LodeTestRun1

LodeTestRun2

LodeTestRun3

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home