Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERSION BMP <-> JPEG AVEC LIBRAIRIE CXIMAGE


Information sur la source

Catégorie :Graphique Niveau : Débutant Date de création : 12/05/2004 Vu / téléchargé: 12 585 / 2 302

Note :
7 / 10 - par 6 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

Après plusieurs demandes, j'ai décidé de poster cette source.
Le but est de convertir une image de format bitmap en jpeg et vice-versa. Après plusieurs recherches sur internet, j'ai trouvé finalement une librairie, CxImage, qui permet d'une part cette conversion (et pleins d'autres fonctions) et d'autre part qui est "compatible" pour les applications API. Cette source n'est en fait qu'un petit allégement de cette librairie.
 

Source

  • #include <windows.h>
  • #pragma comment(lib,"CxImage.lib")
  • #pragma comment(lib,"jpeg.lib")
  • #include "ximage.h"
  • int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
  • {
  • CxImage image;
  • // bmp -> jpg
  • image.Load("C:\\image.bmp", CXIMAGE_FORMAT_BMP);
  • if (image.IsValid())
  • {
  • if(!image.IsGrayScale()) image.IncreaseBpp(24);
  • image.SetJpegQuality(70);
  • image.Save("C:\\image.jpg",CXIMAGE_FORMAT_JPG);
  • }
  • // jpg -> bmp
  • image.Load("C:\\image.jpg", CXIMAGE_FORMAT_JPG);
  • if (image.IsValid())
  • {
  • if(!image.IsGrayScale()) image.IncreaseBpp(24);
  • image.Save("C:\\image2.bmp",CXIMAGE_FORMAT_BMP);
  • }
  • // redimensionner + bmp -> jpg
  • image.Load("C:\\image.bmp", CXIMAGE_FORMAT_BMP);
  • if (image.IsValid())
  • {
  • image.Resample(1024/2,768/2,1,0);
  • image.Save("C:\\imagesize.jpg",CXIMAGE_FORMAT_JPG);
  • }
  • return 0;
  • }
#include <windows.h>

#pragma comment(lib,"CxImage.lib")
#pragma comment(lib,"jpeg.lib")
#include "ximage.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
	CxImage image;

	// bmp -> jpg
	image.Load("C:\\image.bmp", CXIMAGE_FORMAT_BMP);
	if (image.IsValid())
	{
		if(!image.IsGrayScale()) image.IncreaseBpp(24);
		image.SetJpegQuality(70);
		image.Save("C:\\image.jpg",CXIMAGE_FORMAT_JPG);
	}

	// jpg -> bmp
	image.Load("C:\\image.jpg", CXIMAGE_FORMAT_JPG);
	if (image.IsValid())
	{
		if(!image.IsGrayScale()) image.IncreaseBpp(24);
		image.Save("C:\\image2.bmp",CXIMAGE_FORMAT_BMP);
	}

	// redimensionner + bmp -> jpg
	image.Load("C:\\image.bmp", CXIMAGE_FORMAT_BMP);
	if (image.IsValid())
	{
		image.Resample(1024/2,768/2,1,0);
		image.Save("C:\\imagesize.jpg",CXIMAGE_FORMAT_JPG);
	}

	return 0;
}

Conclusion

Le code montre juste la méthode de conversion entre bitmap et jpeg et aussi un redimensionnement. Pour tester, prenez une image au format bitmap, mettez la à la racine C avec comme nom "image.bmp".
Pour ceux qui sont intéressés par les autres fonctions de cette librairie, je vous conseille de jeter un coup d'oeil à cette adresse : http://www.codeproject.com/bitmap/cximage.asp
Vous aurez la librairie complète avec en prime une demo executable qui montre la puissance de celle-ci (c'est en MFC mais le programme est très impressionnant, loin d'être un simple Paint, plutôt au niveau de Paint Shop Pro).
N'hésitez pas à me faire part de vos suggestions ;-)
xentor_609@hotmail.com ou phoenix_darkspirit@hotmail.com
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de juki_webmaster le 13/05/2004 16:16:22

C'est exelent !

signaler à un administrateur
Commentaire de betaxx le 16/05/2004 22:50:07

merci pour ta source xentor609 ,le prog il marche nickel,
j'ai installe cximage avec visual c++, j'ai fait un ptit prog ca transforme l' image.bmp en image.jpeg
mais le probleme c'est que la taille du jpeg et bmp sont identiques (pas de compression)
comment faire pour compresser l'image ? (as'tu modifier lesfichiers .h de cximage?)
voici mon code source :



#include "stdafx.h"
#include "windows.h"
#include "ximage.h"

#define CXIMAGE_FORMAT_JPG 1

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)

{

CxImage  image;
// bmp -&gt; jpg
image.Load("c:\\image.bmp", CXIMAGE_FORMAT_BMP);

if (image.IsValid())

{

    if(!image.IsGrayScale())
{
    image.IncreaseBpp(24);
    image.SetJpegQuality(99);
    image.Save("c:\\image.jpg",CXIMAGE_FORMAT_JPG);
}

}

return 0;
}

signaler à un administrateur
Commentaire de Xentor609 le 17/05/2004 19:21:46

salut, betaxx!
Le problème vient simplement du fait que tu ais rajouté cette ligne :
#define CXIMAGE_FORMAT_JPG 1
Enlève là et tu verras, ca devrait normalement convertir sans problème!
Tu n'as pas besoin de définir quoique ce soit, et c'est là tout l'interêt!
Il te suffit que les 2 librairies (jpeg et CxImage) soient inclues dans ton projet et aussi ximage.h et après tu peux utiliser les fonctions sans problème.
Bye,Xentor609!

signaler à un administrateur
Commentaire de betaxx le 17/05/2004 22:32:38

salut xentor609,
merci pour ta reponse, j'ai fait comme t'as dit ,j'ai enlevé #define CXIMAGE_FORMAT_JPG 1  et il me met une erreur :

error C2065: 'CXIMAGE_FORMAT_JPG' : undeclared identifier

j'ai meme mis #include "ximajpg.h" (car il m'a fait une erreur de link...)
et cximage et jpeg sont bien inclues dans mon projet.
donc voila, je crois que je n'suis pas loin....

@+

signaler à un administrateur
Commentaire de Xentor609 le 18/05/2004 20:42:28

salut,
C'est vraiment bizarre ! Et sur la source que j'ai postée, quand tu la compiles, tu as les même erreurs ?
Le mieux, je pense, c'est que tu m'envoies ton code source pour que je regarde ça de plus près (envoie moi aussi les workspaces et tout ce qui va avec).
Une petite remarque, tu mets #include "windows.h", ca ne serait pas plutot #include &lt;windows.h&gt; ? Enfin je suis pas sur mé ?
Bye,Xentor609

signaler à un administrateur
Commentaire de betaxx le 19/05/2004 18:16:04

salut,
j'ai pris tes fichiers (ximage.h,xmemfile.h,jpeg.lib cximage.lib.....) et je les ai inclu dans mon projet et là ca a marché!!
au fait le probleme c'est qu'avant de compiler cximage il fallait ouvrir ximage.h et modifier   #define CXIMAGE_SUPPORT_JPG 0      par
#define CXIMAGE_SUPPORT_JPG 1
j'ai vu ca en comparant tes fichiers avec ceux que j'ai telechargé.
donc voila , mon prog marche nickel!!
encore merci a toi.
@+

signaler à un administrateur
Commentaire de metalpets le 14/08/2004 15:31:21

je ne comprend pa je n arrive pa a compiler le programme avec devcpp il me dit :
Linker error undefined ref to cximage::load
idem pour save etc....




et en C c faisable?

signaler à un administrateur
Commentaire de metalpets le 14/08/2004 15:32:43

ps pourtant j ai bien ajouter les 2 .lib pour l editeur de liens..

signaler à un administrateur
Commentaire de Xentor609 le 16/08/2004 23:29:36

salut!
Je n'ai jamais utilisé devcpp. Donc il m'est impossible de voir le problème de mes "propres yeux". Essaye de poster sur le forum, en espèrant que quelqu'un de plus expérimenté que moi avec ce compilateur pourra t'aider. De plus, je suis de moins en moins libre en ce moment (en plein déménagement).
Je suis vraiment désolé de ne pas pouvoir t'aider.
Si t'as d'autres questions, j'essayerais d'y répondre, dans la limite de mes possibilités.
Bye, Xentor609 !

signaler à un administrateur
Commentaire de polokab le 28/04/2005 10:55:39

Salut Xentor,
J'ai tout compilé sous Borland C++ 5 et j'obtient le message suivant:
Fatal:  Fatal: Bad object file 'C:\Program Files\BC5\LIB\jpeg.lib' near file offset 0
Est ce que tu sais d'où ca peut venir ?
Merci d'avance.

signaler à un administrateur
Commentaire de Plastic le 26/02/2006 23:27:50

Bonjour,

Est ce qu'en modifiant quelque peu ce code il est possible d'obtenir à partir d'une image jpeg une image bmp codée sur 1 bit(noir et blanc)?

Dans tous les cas merci pour ce code qui m'est deja grandement utile...

signaler à un administrateur
Commentaire de nashnash le 02/07/2006 14:10:12

Les bibliothèques CxImage semblent hélas complètement incompatibles avec BCB6. Dommage...

signaler à un administrateur
Commentaire de pipocodesrc le 20/03/2008 11:22:32

Salut à tous, j'ai compilé le tout sous borland c++ 5.02 (sous bcb..aussi)  sans soucis en quelques heures. Il faut prendre le temps de ramener toutes les librairies indiquées et de les compiler 1 à une -> fastidieux.
voilà, si je peux aider qq1.

par contre j'aimerai bien faire passer une image de RGB -> BW sans passer par les niveaux de gris any ideas.. ? et la doc décrit les fonctions sans les expliquer.. Passer un filtre ? bon je vais qd même regarder de + prés tout ce code/doc
Yo

signaler à un administrateur
Commentaire de pipocodesrc le 20/03/2008 11:29:30

Salut à tous, j'ai compilé le tout sous borland c++ 5.02 (sous bcb..aussi)  sans soucis en quelques heures. Il faut prendre le temps de ramener toutes les librairies indiquées et de les compiler 1 à une -> fastidieux.
voilà, si je peux aider qq1.

par contre j'aimerai bien faire passer une image de RGB -> BW sans passer par les niveaux de gris any ideas.. ? et la doc décrit les fonctions sans les expliquer.. Passer un filtre ? bon je vais qd même regarder de + prés tout ce code/doc
Yo

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,27 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.