1

yop,

j'ai deux question, la deuxième n'a rien à faire dans cette partie mais il n'existe pas de partie adaptée ^^

- Qu'est-ce qui existe (soit dans VC++, soit n'importe quelle librairie, à condition qu'elle existe au moins pour windows) pour manipuler des images, c'est à dire les charger et les sauvegarder dans les formats habituels (bmp, jpg, png, gif... psd ? mais faut pas rêver je pense ^^), et qui gere sans problème la transparence ? En gros, qui me permette d'obtenir à partir d'une image les données RGBA qui correspondent, et inversement. J'ai vaguement entendu parler de CImage, mais j'ai pas trouvé grand chose à propos de la transparence dessus.

- Comment fait-on pour avoir une option "impression" dans un programme (impression d'une une image, en l'occurence) ? Je ne me suis jamais penché sur la question, et j'ai aucune idée ne serait-ce que sur la nature des données qu'il faut avoir en entrée ou la façon de procéder pour imprimer quelque chose.

mci happy
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

Aussi bien pour la manipulation d'images que pour l'impression GDI+ devrait faire l'affaire... Il gère BMP, JPEG, PNG, GIF, WMF, EMF, TIFF.
C'est un API C++ de Microsoft sensé remplacer GDI, standard sous Windows XP (depuis la première version ^^) et installable sous les anciennes versions de windows je crois. En réalité ça remplace seulement les fonctions de dessin de GDI et pas GDI en entier, mais c'est quand même largement plus pratique (du moins selon moi) à utiliser que GDI.
Normalement c'est relativement simple d'utilisation (quoique paraît-il un peu lent... J'ai jamais vraiment remarqué mais je pense que ça dépend de l'utilisation qu'on en fait) et les headers sont fournis si tu as une version du Platform SDK pas trop vieille (genre VS .NET 2003 doît faire l'affaire je pense).
La documentation se trouve évidemment sur MSDN -> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlus.asp (Il y a des bons exemples de code dans les "Using <machin>" de MSDN)

Tu peux aussi utiliser une lib externe comme BMGLib qui semble pas mal, et utiliser GDI pour l'impression. (Ou GDI+... Enfin ça serait un peu con quand même)

En gros le système de dessin sous Windows se base sur des Device Contexts (DC => HDC). Un DC peut être lié a l'écran, à la mémoire (bitmap), ou à une imprimante... (et j'en oublie peut-être) Ce DC stocke les informations sur le dessin, et il faut le passer comme paramètre à chaque fonction de dessin GDI... Sans compter le concept de Sélection de brushes, pens, bitmaps et j'en passe, c'est assez lourd à utiliser, mais faut dire aussi que ça date... C'est pour ça que je conseille GDI+... (La classe Graphics de GDI+ à un constructeur qui prend un HDC en paramètre, mais prend en charge le dessin à la place de GDI)
Pour imprimer il suffit donc de créer un DC vers l'imprimante de ton choix (en utilisant les Dialogues Communs pour demander à l'utilisateur de choisir, par exemple), puis d'utiliser les fonctions de GDI/GDI+ pour dessiner dessus smile
Il faut se référer à la documentation de GDI (Section Printing & Print Spooler) pour la documentation des fonctions d'impression. (Et évidemment pour les fonctions de dessin)
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

3

ah oui heu je suis pas encore allé voir les liens de ton post, mais comme c'est toi tu m'y fais penser : j'ai oublié de préciser que je voulais éviter tout ce qui est .NET, et autres solutions qui forcent l'utilisateur final à installer des trucs supplémentaires ^^

mci sinon happy
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

C'est absolument pas du .NET hein ^^
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

5

oui oui, j'ai précisé que je n'avais pas lu avant de dire ça, mais bon c'est pr éviter tant que possible d'avoir des réponses que je ne pourrai pas prendre en compte ^^

(BMGLib a l'air pas mal sur le papier, par contre le zip est zarb, y'a des makefiles perdus dans quelques dossiers mais pas tous, aucun qui semble tout compiler d'un coup... et surtout aucune explication :/)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

imagemagick est la lib de référence dans pas mal de contextes liés à la manipulation d'images. Existe pour unix et windows, et présente des api C/C++/Java/Lisp/Pascal/Perl/PHP/Python/Ruby.

Cela dit, ton premier post ne parle pas de manipulation d'image, au contraire du titre du topic. S'il s'agit juste de charger les images, utiliser imagemagick serait du gaspillage.

Image foo("foo.jpg");           // Note : la détection du type n'utilise pas l'extension mais analyse le contenu
foo.zoom( Geometry(640, 480) );
foo.type( GrayscaleType );      // Conversion en NVG
foo.normalize();                // Normalisation de l'histogramme des NVG

foo.modifyImage();
foo.draw( DrawableTextAntialias(true) );
foo.draw( DrawableTextUnderColor( ColorGray(0.25) ) );
foo.draw( DrawableText(10, 10, "Démonstration") );

foo.magick( "PNG" );            // Changement du type de codage
foo.write( "bar.png" );         // Enregistrement


La liste des formats supportés est trop longue pour être copiée ici (il y en a quasiment une centaine) => http://www.imagemagick.org/script/formats.php
Sans compter qu'elle sait automatiquement détecter des images gzippées et les ouvre correctement (foo.tga.gz par exemple).

7

oué je sais bien que "manipulation" était bien plus large que ce que je comptais faire, ms ça avait le mérite de faire un titre de topic court grin

heu sinon GDI j'ai pas encore regardé en détail, mais au 1er coup d'oeil je sais faire des tonnes de trucs dont j'ai absolument rien à battre (dessiner des formes, écrire du texte sur l'image, etc etc), mais toujours pas ouvrir un fichier image ni lire les pixels une fois qu'il est chargé; msdn a pas l'air de mettre en avant les mêmes features que celles dont j'aurais besoin, d'après le post de Spectras imagemagick a l'air nettement plus adapté ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

GDI ou GDI+ ? Parce que GDI il lit que les bitmaps et les métafichiers et comme je l'ai dit, l'API sux. (Mais tout ce qui concerne le travail sur les images et les pixels il est absolument pas caché hein... Section Bitmaps sur la première page de la documentation, tout est là tongue)
Et franchement je te conseille vraiment de jeter un oeil à GDI+, c'est (très très) complet et super simple d'utilisation. (Et comme je l'ai dit c'est standard pour toutes les versions de windows >= XP)
Pour charger une image il suffit de faire Bitmap bitmap = new Bitmap(filename);, et c'est bon. (Enfin faut quand même s'intéresser au format des pixels si on veut locker la surface mais spa la mort)
Ensuite pour accéder aux pixels, tu utilise Bitmap::LockBits() et Bitmap::UnlockBits(), et pour dessiner dessus tu crée un objet Graphics avec comme paramètre du constructeur le bitmap en question.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

9

bon faut que j'étudie les deux, j'aurai pê pas le temps aujourd'hui mais j'ai déjà 3 solutions dans mes favoris, merci happy

tant que j'y suis, ça vaut pas le coup de créer un topic pour ça; qu'est-ce qu'il existe comme solutions pour développer une application fenêtrée qui soit multi plate-forme ? comme solutions j'avais QT, mais il est bcp trop cher (ça doit rester légal), et wxWidget mais en plus d'avoir pas mal de points négatifs, il n'a pas à ma connaissance d'interface graphique (il faut se taper le placement de tous les composants et leurs propriétés à la main)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

10

hmmmm, C++ multiplateforme avec interface, et qui permette de faire des licenses non compatibles GPL....ça commence à restreindre pas mal là. Perso je vois pas trop. sorry

11

Euh... Si tu veux pas de wxWidgets, ben je vois que GTK(+ ?), mais bon... Sous linux déjà c'est assez moyen (oué bon c carrément subjectif, mais en tout cas pour moi c tout sauf une interface correcte), mais sous windows c carrément de la merde... (On a seulement droit à une PSEUDO imitation de l'interface native... résultat c'est très moche, et sinon pareil que sous linux) Faut croire que c'est le prix de la portabilité :/
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

12

tcl/tk c'est multiplateformes non ? mais par contre c'est peut-être un peu vieux (je ne connais pas du tout en fait, je sais juste que ça existe)
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

13

Oué mais il fait du C++, pas du tcl ^^

14

je viens de trouver ça : http://upp.sourceforge.net/ , mais je sais pas ce que ça vaut ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

15

Gtk+ mais c'est du procédural (donc du C). Il existe une version orientée objet nommée gtkmm
Cette librairie a l'avantage d'être gratuite et de posséder un paquet d'outil pour le chargement/manipulation d'images et la création d'interfaces graphiques.

Il existe une interface graphique pour Gtk (glade).

Sinon pour wxwidgets il existe aussi un IDE permettant de réaliser des interfaces graphiques mais il est payant.