Red de conocimiento informático - Material del sitio web - ¿Cómo mostrar una imagen png en la pantalla usando C++? Cómo mostrar fragmentos de código fuente de imagen en formato jpeg y png en aplicaciones de Windows (paquete comprimido, 5k) Bibliotecas de terceros dependientes (paquete comprimido, 900k) A menudo veo gente preguntando en el foro de tecnología bbs Problema similar , Permítanme presentarles brevemente cómo resolver este pequeño problema. Debido a que la API de Win32 solo brinda soporte básico para mapas de bits en formato bmp, se requiere una biblioteca de terceros para realizar esta tarea. GDI+ es en realidad una buena opción. No solo admite múltiples formatos de imagen, sino que también admite operaciones de procesamiento de imágenes. Ha realizado ciertas optimizaciones y la definición de la interfaz también es muy clara. Existen soluciones basadas en las bibliotecas JpegLib y libpng.org de Independent Jpeg Group. Tanto el formato Jpeg como el 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 ambas imágenes en un programa de Windows, la imagen comprimida debe restaurarse en un mapa de bits en la memoria. Relativamente hablando, el formato bmp es más fácil de manejar, hasta el punto de que cualquiera puede escribir un módulo para leer una imagen bmp, pero, por supuesto, no es tan fácil porque hay múltiples modos de color a considerar, además del problema de alineación de 4 píxeles. en una imagen bmp. Un proyecto reciente requiere el uso de imágenes jpeg y png. Aquí hay algunos fragmentos de código (no hay DEMO, la parte de lectura del archivo único se ha completado) para compartir con usted. La versión original del código no fue escrita por nuestro equipo. Lo he encapsulado y solucionado algunos errores (como pérdidas de memoria). Iba a hacer una pequeña demostración, pero requiere mucho trabajo (estoy intentando admitir vc6, vc71, vc80, dev-cpp, etc. al mismo tiempo).

¿Cómo mostrar una imagen png en la pantalla usando C++? Cómo mostrar fragmentos de código fuente de imagen en formato jpeg y png en aplicaciones de Windows (paquete comprimido, 5k) Bibliotecas de terceros dependientes (paquete comprimido, 900k) A menudo veo gente preguntando en el foro de tecnología bbs Problema similar , Permítanme presentarles brevemente cómo resolver este pequeño problema. Debido a que la API de Win32 solo brinda soporte básico para mapas de bits en formato bmp, se requiere una biblioteca de terceros para realizar esta tarea. GDI+ es en realidad una buena opción. No solo admite múltiples formatos de imagen, sino que también admite operaciones de procesamiento de imágenes. Ha realizado ciertas optimizaciones y la definición de la interfaz también es muy clara. Existen soluciones basadas en las bibliotecas JpegLib y libpng.org de Independent Jpeg Group. Tanto el formato Jpeg como el 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 ambas imágenes en un programa de Windows, la imagen comprimida debe restaurarse en un mapa de bits en la memoria. Relativamente hablando, el formato bmp es más fácil de manejar, hasta el punto de que cualquiera puede escribir un módulo para leer una imagen bmp, pero, por supuesto, no es tan fácil porque hay múltiples modos de color a considerar, además del problema de alineación de 4 píxeles. en una imagen bmp. Un proyecto reciente requiere el uso de imágenes jpeg y png. Aquí hay algunos fragmentos de código (no hay DEMO, la parte de lectura del archivo único se ha completado) para compartir con usted. La versión original del código no fue escrita por nuestro equipo. Lo he encapsulado y solucionado algunos errores (como pérdidas de memoria). Iba a hacer una pequeña demostración, pero requiere mucho trabajo (estoy intentando admitir vc6, vc71, vc80, dev-cpp, etc. al mismo tiempo).

El siguiente es el método para cargar imágenes jpeg: Código C++ HBITMAP PictureLoader::LoadJpegPicture( const char* fileName ) { FILE * jpegFile; struct jpeg_error_mgr jerr struct jpeg_ decompress_struct cinfo; ) = = NULL) { return HBITMAP(0); } cinfo.err = jpeg_std_error(&jerr); jpeg_create _decompress(&cinfo); jpeg_start_decompress(&cinfo; jpegFile =); cinfo.output_width * cinfo.output_components; int ancho=cinfo.output_width; int altura=cinfo.output_height BYTE *bmpBuffer=new BYTE[(alto+1)*ancho*3]; -> alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, tamaño de fila, 1); while(cinfo.output_scanline < cinfo.output_canline < cinfo.output_canline < cinfo.output_canline < cinfo.output_canline < cinfo.output_canline <output_scanline < cinfo.output_height) { jpeg_read_scanlines (&cinfo, pBuffer, 1); int start=rowSize*(cinfo.output_scanline-1); para( int i = 0; i < rowSize; i++) { bmpBuffer[start+i]=pBuffer[0][i]; } jpeg_finish_sarray ((j_mon_ptr) &cinfo, JPOOL_IMAGE.} jpeg_finish_decompress(&cinfo); jpeg_destroy_decompress(&cinfo) ; mapa de bits HBITMAP = CreateBitmapFromBuffer(bmpBuffer, ancho, alto); fclose(jpegFile); eliminar[] bmpBuffer; devolver mapa de bits; }