begin process at 2010 03 22 07:55:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Multimédia

 > 

Image et Vidéo

 > 

L'image redimensionnée est plus lourde que l'originale.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

L'image redimensionnée est plus lourde que l'originale.

mardi 22 juillet 2008 à 16:59:39 | L'image redimensionnée est plus lourde que l'originale.

SharpMao

Membre Club
Salut à vous,

J'essaie de redimmensionner une image, pour diviser ses dimensions par 2.

J'ai esssayé avec  ça :

Bitmap original = new Bitmap(originalPath);
Bitmap result = new Bitmap(original.Width/2,original.Height/2);
Graphics g = Graphics.FromImage(result);
g.DrawImage(original , 0, 0, original.Width/2 , original.Height /2);
result.Save(resultPath,ImageFormat.Png); //J'ai essayé aussi avec ImageFormat.Jpeg


Le problème, c'est que l'image initiale pèse 2.8Mo, et que la nouvelle, plus petite, pèse 11.8Mo !!
J'aurais plutôt voulu diminuer le poids...

Si vous aviez une piste, ce serait génial.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
mardi 22 juillet 2008 à 21:32:10 | Re : L'image redimensionnée est plus lourde que l'originale.

niky

Membre Club
Réponse acceptée !
Salut,

Plusieurs possibilités :
- Si l'image était en jpg et que tu l'enregistres en png, la taille finale a 99% de chances d'être plus importante... mais là, je ne t'apprend sûrement rien.
- La méthode Save prend aussi en paramètre des options d'encodage. C'est notamment utile pour le jpg où l'on peut régler la qualité d'enregistrement. Je crois qu'elle est fixée à 80% par défaut.
- Ton image originale était en 8 bits/16 bits ou je ne sais quoi et par défaut quand tu créés une bitmap, la profondeur des couleurs est de... 24 ou 32 bits (à vérifier dans la doc).

Je ne vois que ça...
mardi 22 juillet 2008 à 23:42:31 | Re : L'image redimensionnée est plus lourde que l'originale.

Bidou

Administrateur CodeS-SourceS
Moui, même avis que niky...
Tu peux spécifier le type dans le constructeur de ton image finale.
A noter qu'il existe également une méthode GetThumbnail sur la classe Bitmap...



-My Blog-
mercredi 23 juillet 2008 à 07:33:55 | Re : L'image redimensionnée est plus lourde que l'originale.

SharpMao

Membre Club
Réponse acceptée !

Merci à vous deux.

En fait, le problème venait bien de la qualité. Par défaut, elle n'est pas à 80%, mais à 100%.
Pour ceux que ça intéresse, voici un petit bout de code qui fonctionne :

Bitmap original = new Bitmap(originalPath);
Bitmap result = new Bitmap(original.Width / 2, original.Height / 2);
Graphics g = Graphics.FromImage(result);
g.DrawImage(original, 0, 0, original.Width / 2, original.Height / 2);

ImageCodecInfo[] infos = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpgInfo = null;
foreach (ImageCodecInfo info in infos)
{
    if (info.FormatID == ImageFormat.Jpeg.Guid)
    {
        jpgInfo = info;
        break;
    }
}
if (jpgInfo == null)
    throw new Exception("Cannot find JPEG image codec.");

System.Drawing.Imaging.Encoder encoder = System.Drawing.Imaging.Encoder.Quality;

EncoderParameters param = new EncoderParameters();
param.Param[0] = new EncoderParameter(encoder, 80L);

result.Save(resultPath, jpgInfo, param);


Par contre, un truc qui m'énerve un peu, c'est que la classe ImageFormat possède bien une méthode FindEncoder retournant un ImageCodecInfo, mais elle est internal .
C'est le pourquoi de la bloucle pour retrouver le bon ImageCodecInfo.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

mercredi 23 juillet 2008 à 09:05:43 | Re : L'image redimensionnée est plus lourde que l'originale.

Bidou

Administrateur CodeS-SourceS
Tu peux toujours essayer de l'atteindre avec Reflection mais ça sera pas forcément plus rapide...
Au contaire


-My Blog-
mercredi 23 juillet 2008 à 09:08:30 | Re : L'image redimensionnée est plus lourde que l'originale.

Bidou

Administrateur CodeS-SourceS
Réponse acceptée !
Je viens de voir dans la section community, sur la page de la méthode Save de la classe Image, qu'ils utilisent un code similaire au tient, donc probablement qu'on ne peut pas faire mieux.... pour l'instant.

[ Lien ]



-My Blog-
mercredi 23 juillet 2008 à 10:50:24 | Re : L'image redimensionnée est plus lourde que l'originale.

SharpMao

Membre Club
Ca ne m'étonne pas que ce soit similaire, ça ressemble fortement au code de la méthode de ImageFormat.
Vive Reflector...

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)


Cette discussion est classée dans : image, bitmap, result, original, redimensionnée


Répondre à ce message

Sujets en rapport avec ce message

dessiner un graphics sur une image contenue dans une pictureBox [ par godefrw ] Bonjour, je cherche à afficher un objet Graphics (sur lequel j'ai dessiner des formes rectangles, rond etc) par dessus une image. Mon image est conte pb d'affichage avec directx / c# [ par amorosalain ] SAMJ'essaye d'afficher une image par dessus mon espace 3D. J'utilise donc des PositionNormalTextured pour mon environnement 3D et je voulais utiliser Bitmap: colorisation de pixels...Help! [ par Zekez ] Bonjour,Voilà, j'ai un petit problème de colorisation d'une Bitmap... Je dois effectuer un remplissage de couleur (comme dans Paint) et je dois colori declarer une image, comment??? [ par Fildomen ] salutje veux faire :Image im = new Image();et ca marche po :-[vous pouvez me dire comment declarer une nouvelle image?mercisinon, comment utiliser l Bitmap à partir d'une fenêtre... Help! [ par Zekez ] Bonjour,je suis en train de faire une application en C# dans laquelle j'ai besoin d'insérer une sorte de printscreen d'une fenêtre dans une bitmap... class Bitmap obscur [ par sebseb42 ] Salut a tous, j'ai un truc plutot bizarre, je cherche a compresser des images a la voler sans passer par le disque-dur.je fait ceci :public Truc(Bitma Double buffering et lenteur d'affichage [ par takamura ] Bonjour j'essaye de  réaliser un logiciel tout bête qui affiche la map d'un jeu.je souhaite que l'on puisse zoomer /dezoomer sur cette carte. le probl Conversion d'un Bitmap en Tableau a 2 dimension [ par astragoth66 ] Bonjour, j'aimerai savoir s'il est possible de convertir une image Bitmap, en un tableau à 2 dimension. pouvoir regarder les pixels de mon image au co Impossible de visualiser un bitmap sous Photoshop ou IE... [ par robbielove ] Bonjour,Je cherche à transformer les couleurs d'une image. Pour cela je crée un bitamp aux dimensions de l'image origianle, je remplis le bitmap pixel modifier un bitmap [ par catamenia ] bonjours,J'aimerais modifier une image bitmap que je viens d'ouvrir.Pour cela je fais : Bitmap b = new Bitmap(this<FONT siz


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales