bonjour
j'ai un programme en C qui affiche une image bmp enregistré dans un compact flash.
je doit le modifier pour être capable d'affiche une image jpeg aussi. Quelle information je doit le changer dans le HEADER et INFOHEADER? Merci d'avance.
Version imprimable
bonjour
j'ai un programme en C qui affiche une image bmp enregistré dans un compact flash.
je doit le modifier pour être capable d'affiche une image jpeg aussi. Quelle information je doit le changer dans le HEADER et INFOHEADER? Merci d'avance.
Il l'affiche comment, ton image bitmap? Avec les fonctions de l'API Windows?
Franchement, j'ai vaguement lu que l'API Windows supportait plus ou moins directement une image compressée en JPEG, mais tu auras peut-être plus vite-fait de passer par un code externe qui charge le JPEG dans un bitmap ordinaire (en restant dans Windows, je crois que GDI+ peut faire ça; cela aura l'avantage de supporter non seulement BMP et JPEG, mais tous les types supportés par GDI+).
bonjour
merci pour votre réponse.
le programme lire l'adresse de l'image fixer par l'utilisateur. puis lire la le header et l'infoheader de l'image. enfin il l'affiche . Je voudrais de modifier les infos de l'image pour le rend capable de lire une image jpeg.
Un fichier .jpg ne commence même pas par une structure BITMAPFILEHEADER, donc à mon avis tu auras plus vite fait d'utiliser GDI+: En C, GdipCreateBitmapFromFile() semble approprié pour obtenir facilement un bitmap affichable.
est ce qu'il y'a des autres méthodes sans l'utilisation de GDI+ ??? :(
Peut-être utiliser libjpeg à la place? Mais ça ne supportera que les JPEG, et quand il faudra ajouter un nouveau type d'image à supporter, tout sera à refaire, alors que GDI+ supporte déjà tout ça.
Sous GDI+:
- GdipCreateBitmapFromFile() charge le fichier, effectue la conversion de JPEG (ou GIF, ou PNG...) à bitmap, et crée une structure Bitmap sur le tas (probablement un Type Abstrait de Données, comme FILE).
- GdipCreateHBITMAPFromBitmap() te retourne le HBITMAP pour utiliser avec GDI normal.
- GdipBitmapLockBits() te prête directement un buffer contenant les données du bitmap sous le format que tu veux. Que demander de plus?
Merci beaucoup ;)
Ne pas oublier de détruire tout ce que tu crées, et de délocker tout ce que tu lockes, naturellement.