Bmp -> jpeg (jpg) par librairie freeimage et dev-c++

Description

Comme j'avais mis du temps à trouver comment et un peu de mal à trouver les fichiers nécessaires à la compilation pour faire cette conversion, je me suis dit, je vais la proposer.

Pour ce qui est du code, je crois que tout est dans le titre, il convertit un BMP à préciser dans le code en un JPEG (JPG) dans le même dossier que l'exe sous le nom "Image.jpg".
Cette source utilise la célèbre librairie FreeImage.

Le ZIP contient tous les fichiers nécessaires à la compilation et au bon fonctionnement sous Dev-C++ (FreeImage.h, libfreeimage.a et FreeImage.dll).

Voilà j'espère que ça vous plaira.

Oubliez pas de mettre un petit commentaire avec un note ça sera sympa.

Source / Exemple :


//NE PAS OUBLIER DE METTRE LA DLL DANS LE MEME DOSSIER QUE l'EXE

#include <windows.h>
#include <freeimage.h>

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

char szClassName[] = "WindowsApp";
HWND FenetrehWnd, BoutonhWnd;

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
    MSG messages;
    WNDCLASSEX wincl;

    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);
    wincl.hIcon = LoadIcon (NULL, "A");
    wincl.hIconSm = LoadIcon (NULL, "A");
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH)(COLOR_3DFACE+1);

    if (!RegisterClassEx (&wincl)) return 0;

    FenetrehWnd = CreateWindowEx(0, szClassName, "Pour choisir le bitmap à modifier, modifier le code !", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hThisInstance, NULL);
    BoutonhWnd = CreateWindowEx(0, "BUTTON", "Convertir", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 50, 50, 100, 50, FenetrehWnd, (HMENU)1, hThisInstance, NULL);

    ShowWindow (FenetrehWnd, nFunsterStil);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_COMMAND:
            if(HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == 1)
            {
                FIBITMAP * Image, * Image2;
                FreeImage_Initialise(false);
                
                // ICI POUR MODIFIER LE NOM DU FICHIER A CONVERTIR
                //EX : "C:\\Mes Documents\\Image.bmp"
                
                Image = FreeImage_Load(FIF_BMP, "Nouveau Image bitmap.bmp", 0);
                Image2 = FreeImage_ConvertTo24Bits(Image);
                
                //Le fichier sera créé dans le dossier où se trouve l'exécutable sous le nom Image.jpg
                
                if (FreeImage_Save(FIF_JPEG, Image2, "Image.jpg", JPEG_QUALITYGOOD)) MessageBox(FenetrehWnd, "Conversion réalisée avec succès !", "Bravo !", MB_ICONINFORMATION);
                else MessageBox(FenetrehWnd, "Echec de la conversion !", "Echec !", MB_ICONEXCLAMATION);
                FreeImage_Unload(Image);
                FreeImage_Unload(Image2);
                FreeImage_DeInitialise();
            }
        break;
        case WM_DESTROY:
            PostQuitMessage (0);
        break;
        default:
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
    return 0;
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.