fijate que si, este es el que es solo tiene un detalle y es que no esta escalando la imagen , por ejmplo cargale una imagen de 1900 x 1200 y te abre un gui de ese tamaño , mirame a ver si puedo adaptar una funcion de escalarla a tu codigo
si en el foro aleman han trabaajo esto vairas veces a mi el que me puso el code fue prog@andy en el foro americano pero el es de por alla dejo el code que el me paso qace poco, el detallr que tiene es que metes el ancho de lo que vas a cortar las coorenadas peor saber eso para u n user normal es bien dificil si no imposible
pa ra vos y lsoque me han ayudado sirmep en l que lespueda yduar cosa pues que se por intenr por las distancias me dice y con gusto volteamos en el asnuto aun que deprogramacion soy basico hacia abajo lo mio es mas lo social y de dinfundir la palabras o ideas
Código: Seleccionar todo
#include <FreeImage.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#Include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <FreeImage.au3>
#include <GuiConstantsEx.au3>
#Include <Color.au3>
#Include <ScreenCapture.au3>
#Include <Misc.au3>
Global $ImageHandle=-1, $WorkingFileName, $FIF,$inpCropX, $inpCropY,$ShowPic, $hImageNew,$inpCropH, $inpCropW,$btnInvert, $btnRotate, $btnFlipV,$btnFlipH,$btnOpen,$btnCrop,$a;,$a[0],$a[1]
_FreeImage_LoadDLL(@ScriptDir&"\FreeImage.dll")
_FreeImage_Initialise()
;/*/*/*/*/
Opt('MustDeclareVars', 1)
HotKeySet("{Esc}", "GetPos")
;/*/*/*/*
Func OnAutoItExit()
If $ImageHandle <>-1 Then _FreeImage_Unload($ImageHandle)
_FreeImage_DeInitialise()
EndFunc
GUICreate("Titulo aqui",800,700)
$ShowPic = GUICtrlCreatePic("",0,0, 800,600)
$btnOpen = GUICtrlCreateButton("Choose File", 10, 610, 100, 30)
GUICtrlSetTip(-1,"Only a copy of the image will be used")
$btnFlipH = GUICtrlCreateButton("Flip Horizontal", 120, 610, 100, 30)
$btnFlipV = GUICtrlCreateButton("Flip Vertical", 230, 610, 100, 30)
$btnRotate = GUICtrlCreateButton("Rotate ...", 340, 610, 100, 30)
$btnInvert = GUICtrlCreateButton("Invert", 450, 610, 100, 30)
$btnCrop = GUICtrlCreateButton("Crop ...", 560, 610, 100, 30)
;$inpCropX = GUICtrlCreateInput("", 560, 650, 50, 20)
;GUICtrlSetTip(-1, "Crop X-Position")
;$inpCropY = GUICtrlCreateInput("", 610, 650, 50, 20)
;GUICtrlSetTip(-1, "Crop Y-Position")
;$inpCropX =$a[0]
;$inpCropY = $a[1]
$inpCropW = GUICtrlCreateInput("320", 560, 670, 50, 20)
GUICtrlSetTip(-1, "Crop Width")
$inpCropH = GUICtrlCreateInput("480", 610, 670, 50, 20)
GUICtrlSetTip(-1, "Crop Height")
GUISetState()
While 1
Switch GUIGetMsg()
Case -3
Exit
Case $btnOpen
_OpenImage()
Case $btnFlipH
If $ImageHandle <> -1 Then
_FreeImage_FlipHorizontal($ImageHandle)
_FreeImage_SaveU($FIF, $ImageHandle, $WorkingFileName)
_ShowImage()
EndIf
Case $btnFlipV
If $ImageHandle <> -1 Then
_FreeImage_FlipVertical($ImageHandle)
_FreeImage_SaveU($FIF, $ImageHandle, $WorkingFileName)
_ShowImage()
EndIf
Case $btnInvert
If $ImageHandle <> -1 Then
MsgBox( 0, "", _FreeImage_Invert($ImageHandle) & " - " & @error)
_FreeImage_SaveU($FIF, $ImageHandle, $WorkingFileName)
_ShowImage()
EndIf
Case $btnRotate
If $ImageHandle <> -1 Then
$hImageNew = _FreeImage_RotateClassic($ImageHandle, Number(InputBox("Rotate", "angle for rotation", 90)))
_FreeImage_SaveU($FIF, $hImageNew, $WorkingFileName)
_FreeImage_Unload($ImageHandle)
$ImageHandle = $hImageNew
_ShowImage()
EndIf
Case $btnCrop
;Local $x = Int(GUICtrlRead($inpCropX)), $y = Int(GUICtrlRead($inpCropY)), $w = Int(GUICtrlRead($inpCropW)), $h = Int(GUICtrlRead($inpCropH))
Local $x = $inpCropX, $y = $inpCropY,$w = Int(GUICtrlRead($inpCropW)), $h = Int(GUICtrlRead($inpCropH))
If $x>=0 And $y>=0 And $w>0 And $h>0 Then
$hImageNew = _FreeImage_Copy($ImageHandle, $x, $y, $x+$w, $y+$h)
_FreeImage_SaveU($FIF, $hImageNew, $WorkingFileName)
_FreeImage_Unload($ImageHandle)
$ImageHandle = $hImageNew
_ShowImage()
EndIf
EndSwitch
WEnd
Func _OpenImage()
Local $sFile = FileOpenDialog("Escoger imagen","", "Image Files (*.jpg;*.jpeg;*.bmp;*.gif;*.png)", 3)
If @error Then Return
If $ImageHandle <> -1 Then _FreeImage_Unload($ImageHandle)
Local $dot = StringInStr($sFile,".",1,-1)
Local $Name = StringLeft($sFile,$dot-1)
Local $Ext = StringMid($sFile,$dot)
$WorkingFileName = $Name &"_FI4AU3"&$Ext
FileCopy($sFile,$WorkingFileName)
$FIF = _FreeImage_GetFileTypeU($WorkingFileName)
If $FIF = $FIF_UNKNOWN Then
$FIF = _FreeImage_GetFIFFromFilenameU($WorkingFileName)
EndIf
$ImageHandle = _FreeImage_LoadU($FIF, $sFile)
_ShowImage()
EndFunc
Func _ShowImage()
Local $Width, $Height
_SizeProportional($Width, $Height, 800, 600, _FreeImage_GetWidth($ImageHandle), _FreeImage_GetHeight($ImageHandle))
GUICtrlSetPos($ShowPic,0,0,$Width, $Height)
GUICtrlSetImage($ShowPic, $WorkingFileName)
EndFunc
Func _SizeProportional(ByRef $Width, ByRef $Height, $WDesired, $HDesired, $WSrc, $HSrc)
; Prog@ndy
Local $RatioDes = ($WDesired / $HDesired)
Local $CurrentRatio = ($WSrc / $HSrc)
If $CurrentRatio > $RatioDes Then ; scale height
$Width = $WDesired
$Height = $WDesired / $CurrentRatio
Else ; scale width
$Width = $HDesired * $CurrentRatio
$Height = $HDesired
EndIf
EndFunc ;==>_SizeProportional
Func GetPos()
;Local $a
$a = GUIGetCursorInfo()
GUICtrlSetData($inpCropX, $a[0])
GUICtrlSetData($inpCropY, $a[1])
EndFunc ;==>GetPos