COMPRESSION JPG

fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 - 13 janv. 2005 à 14:38
cs_goukenn Messages postés 1 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 14 juillet 2006 - 14 juil. 2006 à 00:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28814-compression-jpg

cs_goukenn Messages postés 1 Date d'inscription samedi 19 juillet 2003 Statut Membre Dernière intervention 14 juillet 2006
14 juil. 2006 à 00:20
Bien, je suis un newbie mais j'apprecie vraiment l'effort surtout que je jusqu'ici je ne comprennais rien Avec les Encodeurs... bon exemple qui ouvre de grande possibilité
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
22 févr. 2005 à 18:38
Bravo pour la source MorpionMx

En fait la compression jpg est simple : tu as une image découper en une matrice. Chaque point de l'image est affecté d'une couleur (Rouge, Vert , Bleu). Si on regarde uniquement la proportion de rouge sur l'image, cela peut donner par exemple une matrice comme suit :

45 48 12 22
56 47 45 95
05 31 31 78

Ainsi de suite pour les autres couleurs.

La compression jpeg consiste a gagner de la place en transformant cette matrice en une matrice ayant un niveau de rouge en haut a gauche (je crois mais je suis pas sur que c'est la moyenne de tous les nombres) et les autres cases sont des nombres qui, appliqué au nombre en haut a gauche donne un résultat.

Par exemple :
50 01 13 12
01 01 01 02
19 12 12 02
Chaque case a par celle en haut a gauche est un facteur (du moins une valeur d'une fonction) permettant de calculer la valeur a remplacer. Cependant, lors des calculs, tu arrondi les resultats. D'ou des valeurs identiques pour certaines cases.

Mais cela permet de coder l'image sur moins de bit sachant que les nombre hors celui du haut en gauche deviennent moins importants suivant le calcul (la compression utilisée). Mais l'arrondi s'en fait alors ressentir.

Par conséquent, quand tu revient a l'image de taille normale, tu obtient alors autant de pixels qu'avant, d'ou l'image qui peut alors etre plus grande mais différente de la vraie.

Une image compressée ne pourra jamais redevenir pareil qu'avant, c'est la dur loi de la compression. D'ou l'arrivée prochaine, (qui existe d'ailleurs deja sur des logiciels (surtout sur les macs , dsl les gars), des images vectorielles. Le système est complétement différent, car le fichier image contiendra uniquement des formules mathématiques. Et on c que si je vous demande de tracer la droite y=2x, il n'y aura pas de défaut dans l'image obtenu quelque soit sa taille. En gros, ce sera le système. Tu pourra étirer l'image a volonté sans perdre en qualité.

Je ne pense pas avoir totalement répondu a ta question, mais desole, c'est des souvenir de cours.

Bonne soirée, et désolé pour le retard
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 janv. 2005 à 12:27
Je suis pas un expert en jpeg / compression donc sincérement, j'ai pas d'explication précise.
En tout cas, j'ai fait des essais d'enregistrement avec compression, puis décompression de l'image compressée avec Slowview, et cela donne la meme chose.
siavs Messages postés 6 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 25 octobre 2007
31 janv. 2005 à 11:52
Hello,
interressant comme petit code.

Question : Si tu compress à fond puis que tu redécompress à fond, tu obtiens une image plus grosse qu'avant ????

Tu explique cela comment ?

A+
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 janv. 2005 à 21:29
Oui, ce n'etait pas le but d'adapter le picturebox, l'exemple sert juste a mettre en oeuvre la compression
Apres, pour garder la meme taille, il suffit de modifier un peu le code ;)
skinia Messages postés 74 Date d'inscription dimanche 3 mars 2002 Statut Membre Dernière intervention 17 septembre 2006
18 janv. 2005 à 17:23
salut
dommage que tu n'adapte pas ton picturebox à l'image
si c un bmp 1024*768 ca la reduit automatiquement
sinon bonne idée
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 janv. 2005 à 14:10
Pas réeellement impeccable, elle est pas commentée, et gère sommairement les exceptions... Mais bon, j'essaierais d'y remédier un jour.
Merci pour tes commentaires :)
hackademius Messages postés 172 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 24 février 2008
18 janv. 2005 à 14:08
merci d'avoir fait si vite , j'en demandai pas tant , mais la , c'est niquel , avec la sauvegarde de l'image .
Maintenant , je vais etudier ca de plus , prés, pour debuter dans mes nouveaux projets

Je trouve que le C commence a ressembler de plus en plus au VB , ca devrait pas etre dur . en tout cas , merci a toi l'ami.

Source impecable.
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
18 janv. 2005 à 13:53
Voilà, c'est ajouté ;)
hackademius Messages postés 172 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 24 février 2008
18 janv. 2005 à 13:35
ouai , c bien , mais ca sauvegarde pas le resultat , c dommage.
Je debute en C .net , y'a une procedure pour enregistrer l'image resultat ? au format bmp ou Jpg , c mieu.

sinon , c bien , j'aime bien
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
13 janv. 2005 à 14:57
OK
Je garde la source de coté

A+
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 janv. 2005 à 14:44
Je n'ai mis que la source (ce qui est reellement necessaire). Mais pas les fichiers de solution, etc.
Normalement, il n'y a rien besoin de plus.

Par contre, j'aurais pu ajouter dans l'explication qu'il faut ajouter les references System, System.Drawing et system.Windows.Forms, ce que je vais faire de ce pas.
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
13 janv. 2005 à 14:38
Bonjour,

Il me semble que ton fichier zip soit incomplet
Rejoignez-nous