Agrandir image

madflo Messages postés 47 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 24 juin 2013 - 12 sept. 2009 à 17:00
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 - 13 sept. 2009 à 17:36
Je souhaite zoomer une image de façon optimisé.

Voici les deux techniques que j'ai utilisé pour l'instant, la rapidité d'exécution est trop lente :

bmpResult de type bitmap source :

Solution 1
dim bmpResult=New Bitmap(bmpResult,bmpResult.Width*iZoom,bmpResult.Height*iZoom)
Résultat : Les pixels sont retraités de façon vectoriel je pense,mes lignes deviennent des pattes de mouche :(

Solution 2
Lors de la création de mon image, je boucle sur chaque pixel et j'applique un algo pour multiplier les points
Résultat : Lenteurs incroyable

Est il donc possible de dire à mon bitmap : 1pixel = un carré de pixel de largeur iZoom.

Merci

2 réponses

cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
12 sept. 2009 à 22:23
Salut,

Si on reste dans l'esprit Framework, voilà une autre façon de faire des zoom:

On suppose que iZoom est un Single et qu'on à déjà l'image à zoomer dans imgSrc.

Dim DrawingRect As New System.Drawing.RectangleF(0, 0, Me.PictureBox1.Image.Width*iZoom, Me.PictureBox1.Image.Height*iZoom)
Dim imgDest As New System.Drawing.Bitmap(CType(DrawingRect.Width, Integer), CType(DrawingRect.Height, Integer), System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
Dim GrafX As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(img)

GrafX.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
GrafX.DrawImage(imgSrc, DrawingRect)


Bon, bien sur la qualité du rendu dépend fortement de la qualité d'image d'origine et le resultat n'est pas amélioré de manière flagrante par rapport à ta méthode N°1. Mais il y à du mieux quand même.
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
13 sept. 2009 à 17:36
Désolé, il y à une erreur dans l'exemple que je donne...

A la ligne :
Dim GrafX As System.Drawing.Graphics =  System.Drawing.Graphics.FromImage(img)

Il faut mettre imgDest à la place de img, comme suit:
Dim GrafX As System.Drawing.Graphics  = System.Drawing.Graphics.FromImage(imgDest)

Et ensuite, à la fin du traitement, on affiche imgDest.
0
Rejoignez-nous