Page 1 sur 1

[R] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 17:57
par DJSIR
Bonjour.
J'ai un petit problème à résoudre.

J'ai ces deux images :
Image 1
Image 1
Sans titre 1.jpg (1.18 Kio) Vu 1378 fois
Image 2
Image 2
Sans titre 2.jpg (1.21 Kio) Vu 1378 fois
J'ai besoin de les découper pour obtenir que la moitié de chaque. Exemple, je veux couper l'image 1 et l'image 2 de facon a obtenir une image de 50x100.
Une fois obtenue, il faut l'enregistrer... Possible ? Merci

Re: [..] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 18:25
par Habibsbib
Rigolo comme problème... je me demande qu'est-ce que tu veux faire avec ça ^^

Autrement, ben je vois pas... tu devrais te tourner du côté UDF's, sur le site amèricain il devrait bien y avoir quelquechose (non?^)

Je cherche...

Re: [..] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 18:28
par DJSIR
Réponse trouvée ici

Re: [R] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 18:39
par Habibsbib
Y a toujours quelque chose sur le fofo anglais :wink:

Re: [..] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 18:44
par DJSIR
Sauf que...... <retour sur le forum>

Reprenons mon exemple.. L'image n°1 s'apelle sans.png. Normalement le fichier sans2 devrait être orange non?

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

 AutoIt Version : 3.3.0.0
 Auteur:         MonNom

 Fonction du Script :
    Modèle de Script AutoIt.

#ce ----------------------------------------------------------------------------

; Début du script - Ajouter votre code ci-dessous.
#include <GDIPlus.au3>

; Load PNG file as GDI bitmap
_GDIPlus_Startup()
$gdi_pngSrc = @ScriptDir&"\sans.png"
$gdi_hImage = _GDIPlus_ImageLoadFromFile($gdi_pngSrc)

; Extract image width and height from PNG
$gdi_imageWidth = _GDIPlus_ImageGetWidth($gdi_hImage)
$gdi_imageHeight = _GDIPlus_ImageGetHeight($gdi_hImage)

; Get Left, Right & Center from back.png
$gdi_hLeftImage = _ImageCut($gdi_hImage, 0, 0, 50, 100)
$gdi_hLeftImage1 = _ImageCut($gdi_hImage, 50, 0, 50, 100)
_GDIPlus_ImageSaveToFile($gdi_hLeftImage, @ScriptDir&"\sans1.png")
_GDIPlus_ImageSaveToFile($gdi_hLeftImage1, @ScriptDir&"\sans2.png")

; Release resources
_GDIPlus_ImageDispose($gdi_hLeftImage)
_GDIPlus_ImageDispose($gdi_hLeftImage1)
_GDIPlus_ImageDispose($gdi_hImage)

_GDIPlus_Shutdown()

Func _ImageCut($hImage, $iX, $iY, $iWidth, $iHeight)
    Local $iImageWidth, $iImageHeight, $hOldGC, $hNewGC, $hOldBmp, $hNewBmp
; Extract image width and height from PNG
    $iImageWidth = _GDIPlus_ImageGetWidth($hImage)
    $iImageHeight = _GDIPlus_ImageGetHeight($hImage)
; Create New image
    $hOldGC = _GDIPlus_ImageGetGraphicsContext($hImage); Get GC from $hImage
    $hOldBmp = _GDIPlus_BitmapCreateFromGraphics($iImageWidth, $iImageHeight, $hOldGC); Create Bmp from the old GC
    $hNewBmp = _GDIPlus_BitmapCloneArea($hOldBmp, $iX, $iY, $iWidth, $iHeight, $GDIP_PXF32ARGB); Get Piece of Bmp
    $hNewGC = _GDIPlus_ImageGetGraphicsContext($hNewBmp); Get GC from new created Bmp
    _GDIPlus_GraphicsDrawImage($hNewGC, $hImage, 0, 0); Draw the image, i don't really know why you have to use $hImage
    _GDIPlus_GraphicsDispose($hOldGC)
    _GDIPlus_GraphicsDispose($hNewGC)
    _GDIPlus_BitmapDispose($hOldBmp)
    Return $hNewBmp
EndFunc
 

Re: [..] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 19:03
par Habibsbib
Ben si ça marche, effectivement, c'est sans2 qui devrait être orange :?

Re: [..] Découper une image et l'enregistrer

Posté : lun. 28 déc. 2009 19:05
par DJSIR
(il ne l'est pas)

Re: [..] Découper une image et l'enregistrer

Posté : mer. 30 déc. 2009 18:10
par TommyDDR
Je n'ai pas essayé mais tente de changer :

$gdi_hLeftImage = _ImageCut($gdi_hImage, 0, 0, 50, 100)
$gdi_hLeftImage1 = _ImageCut($gdi_hImage, 50, 0, 50, 100)

en mettant

$gdi_hLeftImage = _ImageCut($gdi_hImage, 0, 0, 50, 100)
$gdi_hLeftImage1 = _ImageCut($gdi_hImage, 50, 0, 100, 100)

;) c'est plus logique

Re: [..] Découper une image et l'enregistrer

Posté : ven. 01 janv. 2010 14:19
par Habibsbib
:borne code à ajouter:

Autrement, je n'ai pas testé, mais logiquement ça semble bon :)