[R] Comment récupérer la taille en pixel d'une image donnée

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

[R] Comment récupérer la taille en pixel d'une image donnée

#1

Message par Yogui »

je m'explique,

j'ai fait un petit script qui réduit une image (mais sans s'occuper de sa taille d'origine) mon appareil photo prend des photos toujours à la même taille... mais problème les photo en portrait se retrouvent en paysage il me faut donc connaitre la taille d'origine pour réduire sans changer le format.

j'espère voir été claire

Merci pour votre aide
Modifié en dernier par Yogui le ven. 07 nov. 2008 14:04, modifié 1 fois.
Linox
Niveau 5
Niveau 5
Messages : 112
Enregistré le : dim. 28 sept. 2008 07:25
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#2

Message par Linox »

avec quoi tu réduit ton image ?
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#3

Message par jbnh »

J'ai trouvé un udf sympa:
► Afficher le texte
Il marche uniquement pour des JPG par contre...
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#4

Message par Yogui »

super merci

Dommage pour les autre format mais c'est déjà un super début merci

Pour redimensionner les images j'utilise une fonction trouvée sur le forum anglais qui fonctionne très bien :

Code : Tout sélectionner

Func _ImageResize($sInImage, $sOutImage, $iW, $iH)
    Local $hWnd, $hDC, $hBMP, $hImage1, $hImage2, $hGraphic, $CLSID, $i = 0
    
    ;OutFile path, to use later on.
    Local $sOP = StringLeft($sOutImage, StringInStr($sOutImage, "\", 0, -1))
    
    ;OutFile name, to use later on.
    Local $sOF = StringMid($sOutImage, StringInStr($sOutImage, "\", 0, -1) + 1)
    
    ;OutFile extension , to use for the encoder later on.
    Local $Ext = StringUpper(StringMid($sOutImage, StringInStr($sOutImage, ".", 0, -1) + 1))
    
    ; Win api to create blank bitmap at the width and height to put your resized image on.
    $hWnd = _WinAPI_GetDesktopWindow()
    $hDC = _WinAPI_GetDC($hWnd)
    $hBMP = _WinAPI_CreateCompatibleBitmap($hDC, $iW, $iH)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    
    ;Start GDIPlus
    _GDIPlus_Startup()
    
    ;Get the handle of blank bitmap you created above as an image
    $hImage1 = _GDIPlus_BitmapCreateFromHBITMAP ($hBMP)
    
    ;Load the image you want to resize.
    $hImage2 = _GDIPlus_ImageLoadFromFile($sInImage)
    
    ;Get the graphic context of the blank bitmap
    $hGraphic = _GDIPlus_ImageGetGraphicsContext ($hImage1)
    
    ;Draw the loaded image onto the blank bitmap at the size you want
    _GDIPLus_GraphicsDrawImageRect($hGraphic, $hImage2, 0, 0, $iW, $iW)
    
    ;Get the encoder of to save the resized image in the format you want.
    $CLSID = _GDIPlus_EncodersGetCLSID($Ext)
    
    ;Generate a number for out file that doesn't already exist, so you don't overwrite an existing image.
    Do 
        $i += 1
    Until (Not FileExists($sOP & $i & "_" & $sOF))
    
    ;Prefix the number to the begining of the output filename
    $sOutImage = $sOP & $i & "_" & $sOF
    
    ;Save the new resized image.
    _GDIPlus_ImageSaveToFileEx($hImage1, $sOutImage, $CLSID)
    
    ;Clean up and shutdown GDIPlus.
    _GDIPlus_ImageDispose($hImage1)
    _GDIPlus_ImageDispose($hImage2)
    _GDIPlus_GraphicsDispose ($hGraphic)
    _WinAPI_DeleteObject($hBMP)
    _GDIPlus_Shutdown()
EndFunc
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#5

Message par tolf »

_GDIPlus_ImageGetHeight pour la hauteur de l'image et _GDIPlus_ImageGetWidth pour sa largeur
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#6

Message par Yogui »

Il n'est pas fini mais voilà le code que j'ai fait, et récupérer pour redimentionner des images dans un dossier pour les mettre dans un dossier photos dans mes doc les image sont trier par date de création. c'est un premier jet je pense encore l'améliorer
► Afficher le texte
Linox
Niveau 5
Niveau 5
Messages : 112
Enregistré le : dim. 28 sept. 2008 07:25
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#7

Message par Linox »

Yogui a écrit :Pour redimensionner les images j'utilise une fonction trouvée sur le forum anglais qui fonctionne très bien :
Pourrais tu me donner le lien direct ?

J'ai fait un générateur de galerie photos en autoit et pour redimensionner mes images j'utilise image magick
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Comment récupérer la taille en pixel d'une image donnée

#8

Message par Yogui »

Répondre