C/Visual C - abrir y guardar imagenes con Visual C++

 
Vista:

abrir y guardar imagenes con Visual C++

Publicado por Marco (1 intervención) el 09/09/2002 20:40:42
Hola a tod@s.
En un programilla que estoy haciendo necesito pasar todo el contenido de la vista a un archivo BMP y/o JPG, y tambien la operacion inversa, es decir coger un archivo imagen y poner el contenido en la vista. ¿alguien puede ayudarme? ¿Necesito alguna libreria? En caso de ser así ¿donde puedo encontrarla?
Muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Guardar y cargar imágenes en formato BMP/JPG en la vista

Publicado por Alejandro (913 intervenciones) el 19/03/2025 19:41:42
Para implementar la funcionalidad de guardar el contenido de la vista en un archivo BMP o JPG y cargar imágenes desde archivos a la vista en Visual C++, puedes utilizar bibliotecas como **GDI+** o **libjpeg**. Aquí te dejo una guía sobre cómo hacerlo:

1. Guardar el contenido de la vista en un archivo BMP/JPG



Usando GDI+:
GDI+ es una biblioteca que facilita el manejo de gráficos en Windows. Para usar GDI+, asegúrate de incluir las librerías necesarias y de inicializar GDI+ en tu aplicación.

Código de ejemplo para guardar como BMP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <gdiplus.h>
using namespace Gdiplus;
 
void SaveViewToBMP(HWND hwnd, const wchar_t* filename) {
    HDC hdc = GetDC(hwnd);
    // Crear un bitmap compatible
    HBITMAP hBitmap = CreateCompatibleBitmap(hdc, width, height);
    // Crear un contexto de memoria
    HDC hMemDC = CreateCompatibleDC(hdc);
    SelectObject(hMemDC, hBitmap);
    // Copiar el contenido de la vista al bitmap
    BitBlt(hMemDC, 0, 0, width, height, hdc, 0, 0, SRCCOPY);
 
    // Guardar el bitmap usando GDI+
    Bitmap bmp(hBitmap, NULL);
    CLSID clsid;
    GetEncoderClsid(L"image/bmp", &clsid);
    bmp.Save(filename, &clsid, NULL);
 
    // Limpiar
    DeleteObject(hBitmap);
    DeleteDC(hMemDC);
    ReleaseDC(hwnd, hdc);
}

2. Cargar una imagen desde un archivo a la vista



Código de ejemplo para cargar una imagen:
1
2
3
4
5
6
void LoadImageToView(HWND hwnd, const wchar_t* filename) {
    Gdiplus::Bitmap bitmap(filename);
    // Aquí debes dibujar la imagen en tu vista
    Graphics graphics(GetDC(hwnd));
    graphics.DrawImage(&bitmap, 0, 0);
}

3. Librerías necesarias



- GDI+: Viene con Windows, pero necesitas incluir `gdiplus.lib` en tu proyecto y agregar `#include <gdiplus.h>`.
- libjpeg: Si prefieres trabajar con JPEG, puedes usar la biblioteca `libjpeg`. Puedes encontrarla en libjpeg-turbo (https://libjpeg-turbo.org/).

4. Recursos adicionales



- Para más información sobre GDI+, puedes consultar la documentación de Microsoft (https://docs.microsoft.com/en-us/windows/win32/gdiplus/-gdiplus-using-gdi).
- Para `libjpeg`, revisa la página oficial (http://libjpeg.sourceforge.net/).

Con estos pasos, deberías poder implementar la funcionalidad que necesitas en tu aplicación. ¡Buena suerte, Marco!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar