Red de conocimiento informático - Material del sitio web - ¿Cómo mostrar png en la pantalla usando C++? La forma de mostrar fragmentos de código fuente de imágenes jpeg y png (paquete comprimido zip, 5k) en aplicaciones de Windows depende de la biblioteca de terceros (paquete comprimido zip, 900k). La gente suele hacer preguntas similares en la página técnica de bbs. Permítanme presentarles brevemente cómo resolver este pequeño problema. Debido a que la API de Win32 solo proporciona soporte básico para mapas de bits en formato bmp, es necesario utilizar una biblioteca de terceros para completar esta tarea. GDI+ es en realidad una buena opción. No solo admite varios formatos de imagen, sino que también admite operaciones de procesamiento de imágenes. Se ha optimizado hasta cierto punto y la definición de la interfaz también es muy clara. De lo que estoy hablando aquí es de la solución de dos bibliotecas: JpegLib basada en el grupo independiente Jpeg y libpng de libpng.org. Tanto jpeg como png son formatos de imagen comprimidos. La diferencia es que Jpeg usa compresión con pérdida y png usa compresión sin pérdida. Para mostrar estas dos imágenes en un programa de Windows, las imágenes comprimidas deben restaurarse en mapas de bits en la memoria. En términos relativos, las imágenes en formato bmp son mucho más fáciles de procesar, por lo que puede escribir un módulo para leer imágenes bmp al verificar información. Por supuesto esto no es del todo fácil, también se deben tener en cuenta los múltiples modos de color y la alineación de los 4 píxeles en la imagen bmp. Bueno, no importa lo problemático que sea leer jpeg y png, ijg y libpng.org han escrito una biblioteca para leer archivos en estos dos formatos, ambos escritos en lenguaje C. Durante este período, libpng se basó en zlib, que también está escrito en C. Los proyectos recientes requieren el uso de imágenes jpeg y png. Aquí hay algunos fragmentos de código para compartir (no es necesario demostrarlos, solo está completa la parte del archivo de solo lectura). Las versiones originales de estos códigos no fueron escritas por nuestro equipo, pero las encapsulamos y solucionamos algunos errores (como pérdidas de memoria). Originalmente quería hacer una pequeña DEMO, pero la carga de trabajo era enorme (intenté admitir vc6, vc71, vc80, dev-cpp, etc.).

¿Cómo mostrar png en la pantalla usando C++? La forma de mostrar fragmentos de código fuente de imágenes jpeg y png (paquete comprimido zip, 5k) en aplicaciones de Windows depende de la biblioteca de terceros (paquete comprimido zip, 900k). La gente suele hacer preguntas similares en la página técnica de bbs. Permítanme presentarles brevemente cómo resolver este pequeño problema. Debido a que la API de Win32 solo proporciona soporte básico para mapas de bits en formato bmp, es necesario utilizar una biblioteca de terceros para completar esta tarea. GDI+ es en realidad una buena opción. No solo admite varios formatos de imagen, sino que también admite operaciones de procesamiento de imágenes. Se ha optimizado hasta cierto punto y la definición de la interfaz también es muy clara. De lo que estoy hablando aquí es de la solución de dos bibliotecas: JpegLib basada en el grupo independiente Jpeg y libpng de libpng.org. Tanto jpeg como png son formatos de imagen comprimidos. La diferencia es que Jpeg usa compresión con pérdida y png usa compresión sin pérdida. Para mostrar estas dos imágenes en un programa de Windows, las imágenes comprimidas deben restaurarse en mapas de bits en la memoria. En términos relativos, las imágenes en formato bmp son mucho más fáciles de procesar, por lo que puede escribir un módulo para leer imágenes bmp al verificar información. Por supuesto esto no es del todo fácil, también se deben tener en cuenta los múltiples modos de color y la alineación de los 4 píxeles en la imagen bmp. Bueno, no importa lo problemático que sea leer jpeg y png, ijg y libpng.org han escrito una biblioteca para leer archivos en estos dos formatos, ambos escritos en lenguaje C. Durante este período, libpng se basó en zlib, que también está escrito en C. Los proyectos recientes requieren el uso de imágenes jpeg y png. Aquí hay algunos fragmentos de código para compartir (no es necesario demostrarlos, solo está completa la parte del archivo de solo lectura). Las versiones originales de estos códigos no fueron escritas por nuestro equipo, pero las encapsulamos y solucionamos algunos errores (como pérdidas de memoria). Originalmente quería hacer una pequeña DEMO, pero la carga de trabajo era enorme (intenté admitir vc6, vc71, vc80, dev-cpp, etc.).

).El siguiente es el método para cargar imágenes jpeg: Código C++ hbitmap image loader::loadjpegpicture(const char * filename){ file * JPEG file; = fopen(fileName, "Rb)) = = NULL){ return hbit map(0);} cinfo.err = JPEG_STD_error(&jerr);jpeg_create_decompresscinfo);JPEG_stdio_src(&cinfo , archivo JPEG); JPEG_read_header(&cinfo, verdadero) ; jpeg_start_decompress(&cinfo); int rowSize = cinfo.output_width * cinfo.output_components; int ancho = cinfo_widthint altura = cinfo.output_height BYTE * bmpBuffer = nuevo byte buffer = (* cinfo . mem-> alloc _ sarray) ((j _common_ptr)&cinfo,JPOOL_IMAGE,rowSize,1); while(cinfo.output_scanline<cinfo.output_height){ JPEG_read_scanlines(&cinfo,pBuffer,1 ); int inicio = tamaño de fila *(cinfo . salida _ scanline-1); JPEG_finish_decompress(&cinfo); jpeg_destroy_decompress.cinfo); mapa de bits hbit = CreateBitmapFromBuffer(búfer BMP, ancho, alto); borrar []búfer BMP;