Compression jpg

4/5 (13 avis)

Vue 23 695 fois - Téléchargée 1 417 fois

Description

Suite a une question du forum, voici comment appliquer une compression JPG à une image

Conclusion :


Pour ouvrir un fichier, il suffit de cliquer sur le picturebox de gauche.
L'image s'affiche alors aussi dans le picturebox de droite, a la taille de celle-ci.
Il suffit ensuite de jouer avec la scrollbar pour modifier la compression, pour voir en temps reel l'apercu de l'image compressée.

Pour sauvegarder l'image obtenue, cliquez sur le picturebox de l'aperçu.

Les références necessaires pour la compilation sont :
-System
-System.Drawing
-System.Windows.Forms

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
samedi 19 juillet 2003
Statut
Membre
Dernière intervention
14 juillet 2006

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é
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
25
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
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
52
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.
Messages postés
6
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
25 octobre 2007

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+
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
52
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 ;)

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.