begin process at 2010 02 10 09:42:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Multimédia

 > 

Image & Vidéo

 > 

Redimensionnement d'image


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

Redimensionnement d'image

mercredi 26 décembre 2007 à 11:14:42 | Redimensionnement d'image

bilaloch

Bonjour à tous,

J'aimerais en savoir plus sur le redimensionnement d'image. Toutes les techniques que j'ai vu sur le site utilisent des PictureBox pour redimensionner les images. Or, j'aimerais pouvoir le faire par d'autres moyens (APIs, ou autres fonctions...) car d'un côté je ne veux pas être dépendant de contrôles (histoire d'être plus propre de mon point de vue...) et d'un autre le résultat est plutôt moche (l'image ainsi redimensionnée semble avoir perdu de la qualité)...

Merci d'avance à tous,

BILALoch
mercredi 26 décembre 2007 à 11:32:07 | Re : Redimensionnement d'image

pneau

Membre Club
salut
as tu regardé du coté de l'api "StretchBlt"

perso je l'utilise lorsque je souhaite géré un redimensionnement dynamique d'une picture box.... la dégradation éventuelle de l'image est plus liée à sa qualité d'origine qu'au redimensionnement proprement dit..

sur ce...

bonne journée

Pat

 Don't Worry , Be Happy


lorsque le problème est résolu, pensez Réponse Acceptée
mercredi 26 décembre 2007 à 11:58:53 | Re : Redimensionnement d'image

jmfmarques

Membre Club
car d'un côté je ne veux pas être dépendant de contrôles (histoire d'être plus propre de mon point de vue...) et d'un autre le résultat est plutôt moche (l'image ainsi redimensionnée semble avoir perdu de la qualité)...


Je vois mal comment tu pourrais ne pas être dépendant d'un contrôle, à moins que tu ne nous aies pas tout dit de ce que tu entends par "redimensionnement d'une image" .... Qu'est exactement pour toi une image ? Ne voudrais-tu pas plutôt parler de fichier graphique ?

Une image redimensionnée perd forcément de sa qualité (en retrécissement, il va bien falloir enlever des pixels  quelque part, par exemple... ce sera moins mal en agrandissement, mais se posera quand même un problème également ... tiens : imagine que tu augmentes la largeur d'un pixel ... lequel ajouteras-tu ?))
mercredi 26 décembre 2007 à 12:13:04 | Re : Redimensionnement d'image

bilaloch

Merci pour vos réponses. Bon, alors dans l'ordre :

- pneau : je te remercie de ton idée. Je garde à l'esprit ton API si je n'ai pas d'autres solutions (car dans ton API on passe encore en arguments des contrôles PictureBox, or, c'est ce que j'aimerais éviter).

- jmfmarques : je t'explique. Une image est pour moi un fichier image. En gros j'aimerais pouvoir écrire une fonction dans un module indépendant (donc sans contrôle) qui pourrait faire quelque chose comme :
"ReDimensionner (CheminSource As String, CheminDestination As String)", où "CheminSource" désigne le lien du fichier image à redimensionner et "CheminDestination" désigne le lien du fichier image redimensionné.
Pour finir, je dirai qu'une perte de qualité dans tes deux cas est normale, mais que certains algos permettent de garder le maximum de qualité dans le fichier redimensionné par certaines techniques (par exemple, au lieu de supprimer des pixels, ça fait une sorte de moyenne entre les différents pixels de l'endroit du redimensionnement...), et je ne suis pas sûr que cela se fait rapidement en VB, c'est pourquoi je voulais en savoir davantage...

BILALoch
mercredi 26 décembre 2007 à 13:46:47 | Re : Redimensionnement d'image

PCPT

Administrateur CodeS-SourceS
Réponse acceptée !
salut,

voici une manière sans contrôle :
http://www.vbfrance.com/codes/DESSINER-PASSANT-PICTUREBOX-MODULE-CLASSE_43226.aspx

++

Prenez un instant pour répondre à ce sondage svp
mercredi 26 décembre 2007 à 17:50:22 | Re : Redimensionnement d'image

bilaloch

Aujourd'hui PCPT, tu es une vraie furie :D Non sérieusement, merci pour tes réponses instructives. J'aimerais te poser une question : comment puis je perdre le moins de qualité sur le redimensionnement d'une image ? Parce que je remarque bien qu'entre une classe de redim écrite en VB et le résultat obtenu sur toshop, il y a une réelle différence de qualité :(

BILALoch
mercredi 26 décembre 2007 à 18:23:58 | Re : Redimensionnement d'image

PCPT

Administrateur CodeS-SourceS
re,

c'est pas le principe d'une classe mais de ce que tu fais au final...
c'est sur que de re-dimensionner un bmp 800*600 en bmp 400*300, çà rendra bien plus net qu'un jpg de 1000*850 en bmp 400*300 ....

après reste à voir comment tu t'y prendras, à savoir ma classe (pour l'exemple), un bitblt, du stretchblt, paintpicture, gdi+ etc....

le lien que je t'ai donné permet d'avoir un hdc sans picturebox et contient quelques fonctions pratiques dont le resize mais ce n'est pas forcément optimisé pour.... à toi de voir selon tes images.
surtout si, cumulé avec ta dernière question, tu travailles en jpg! pour conserver la qualité il sera peut-être préférable de re-dimensionner avant de convertir

bon courage ++
PCPT  [AFCK]

Prenez un instant pour répondre à ce sondage svp
mercredi 26 décembre 2007 à 21:28:08 | Re : Redimensionnement d'image

bilaloch

Ne t'inquiètes pas, je redimensionne l'image avant de la transformer en JPG. Mais bon... malgré cela, l'image redimensionnée en plus petite a une qualité assez médiocre :S Cela est assez étonnant d'ailleurs... J'ai ensuite essayé de rendre l'image floue avant de la redimensionner, et aussi de la pixeliser avant de la redimensionner, mais dans les 2 cas, la perte de qualité est présente... As tu une idée pour moi ? De la doc, des liens, des contacts...? :)

Merci encore,

BILALoch
mercredi 26 décembre 2007 à 22:06:48 | Re : Redimensionnement d'image

PCPT

Administrateur CodeS-SourceS
montre un bout de code? voir comment tu t'y prends ?
mercredi 26 décembre 2007 à 22:27:57 | Re : Redimensionnement d'image

bilaloch

Le code que je te donne permet de redimensionner une image en une autre de 100 * 100 pixels (on centre l'image, sans la déformer). Je précise que je ne peux donner qu'un bout du code ici, pas assez de place pour le reste, donc il y a quelques appels de fonction assez incompréhensibles sans le reste du code, mais c'est le plus important. Voilà :

Public Function Redimensionner(FichierSource As String, FichierDestination As String, frmReDim As Form, PicSource As PictureBox, PicDestination As PictureBox, Taille As Integer)
    ' ---Change le pointeur de la souris---
    Screen.MousePointer = vbHourglass
    ' ---Déclaration des variables---
    Dim Ret As Long
    Dim Hauteur As Long
    Dim Largeur As Long
    Dim Recupere As Long
    Dim cDib As New cDIBSection
    Dim Bits() As Byte
    
    PicSource.AutoSize = True
    PicSource.AutoRedraw = True
    PicDestination.AutoRedraw = True
    PicSource.Appearance = 0
    PicDestination.Appearance = 0
    PicSource.BorderStyle = 0
    PicDestination.BorderStyle = 0
    
    ' ---Initialisation---
    PicSource.ScaleMode = vbPixels
    PicDestination.ScaleMode = vbPixels
    frmReDim.ScaleMode = vbPixels
    
    PicSource.Picture = LoadPicture(FichierSource)
    
    DC = GetPixelData(PicSource.Image, Bits())
    Mosaique Bits(), 0, 0, PicSource.ScaleWidth, PicSource.ScaleHeight, 5, 5
    SetPixelData DC, PicSource.Image, Bits()
    
    PicDestination.Height = Taille
    PicDestination.width = Taille
    
    If PicSource.width > PicSource.Height Then
        Recupere = PicSource.Height
    Else
        Recupere = PicSource.width
    End If
    
    PicDestination.PaintPicture PicSource, 0, 0, PicDestination.ScaleWidth, PicDestination.ScaleHeight, (PicSource.width / 2) - (Recupere / 2), (PicSource.Height / 2) - (Recupere / 2), Recupere, Recupere
    PicDestination.Picture = PicDestination.Image
    ' ---Remet le pointeur de la souris par défaut---
    
    cDib.CreateFromPicture PicDestination.Picture
    
    Screen.MousePointer = vbDefault
    
    SaveJPG cDib, FichierDestination, 100
End Function

J'espère que cela t'a un peu aidé pour comprendre mon problème. Si tu veux le code intégral, je pourrais te l'envoyer par mail.

Merci ^^

BILALoch

1 2 3 4

Cette discussion est classée dans : image, redimensionnement


Répondre à ce message

Sujets en rapport avec ce message

module d'affichage 2d [ par Pof ] je voudrais savoir si il existe un module ou une dll pour faire ces fonctions-ci sous direct-draw :charger une image dans une surface (bmp gif ou png) pb redimensionnement image [ par chris21 ] Bonjour, je recherche une méthode pour redimensionner et sauvegarder une image, j'ai essayé ça: Image1.Picture.Width = Image1.Picture.Width / 2Image1. Redimensionnement d'image [ par ouissler ] Salut J'ai un soucis. J'ai une serie de bouton dans mon portfolio. Quand je les survole ca affiche une image en miniature. Premier probleme : je voud Redimensionnement d'image impossible [ par zoglub14 ] Bonsoir à tous,J'essaie desesperement de redimensionner une image chargé dans une PictureBox, pour ensuite la sauvegarderPour cela j'ai crée une deuxi redimensionnement image [ par firewaller ] Bonjour,J'aimerais savoir comment on fait pourredimensionner des images dans un pictureBox ou un Image lorsque celles sont sont plus grande que leur c Problème de redimensionnement d'image [ par platinum75 ] Bonjour,j'ai une image de 1024x768 dans un picturebox et je souhaiterai que celle ci soit enregistrée au format jpg en 800x600.J'ai vu que plusieurs p Envoi d'image+redimensionnement [ par Benji66 ] salut je recherche un script permettant en php d'uploader une image (ca je sais faire) et de la redimensionner avant l'envoi pour qu'elle prenne moins Envoi d'image+redimensionnement [ par Benji66 ] salut je recherche un script permettant en php d'uploader une image (ca je sais faire) et de la redimensionner avant l'envoi pour qu'elle prenne moins Redimensionnement d’image [ par angelanddelus100 ] Bonjour à tous,   <p class="MsoNor Redimensionnement d'une image [ par BenoDuJ ] Bonjour à tous,Je suis en train d'écrire un programme dans lequel je dois copier une image (de n'importe quel format à priori) et l'enregistrer dans u


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,920 sec (3)

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