Bonjour a tous,
Alors voila pour les besoins d'un projet de site internet mes collegues doivent placer des images et definir l'angle de vue en fonction d'un focus qu'ils placeront sur une zone precise de l'image. Puisque je n'ai pas pu trouver un outil qui le propose, je me suis engage a fournir une solution qui permet de connaitre rapidement l'emplacement du focus par rapport aux limites de l'image. Initialement, on obtient ses coordonnees a l'aide d'un soft de mapping comme Xmap, qu'on indique ensuite via le script.
Par exemple, on cherche a savoir pour une image en 1600x1200, a quel emplacement se situe le point de focus ayant pour coordonnees (400,240).
La reponse etant 400/1600=25% pour la largeur, et 240/1200=20% pour la hauteur.
Mon script se presente donc sous la forme d'un formulaire dont un des champs permet de renseigner les coordonnees du focus.
Voila le bout de code concerne:
► Afficher le texte
Code : Tout sélectionner
#include "image_get_info.au3"
#include <GUIConstantsEx.au3>
#include <String.au3>
$guiwpos=(@DesktopWidth/2)-200
$guihpos=(@DesktopHeight/2)-140
GUICreate("Image width/height calculator",480,280,$guiwpos,$guihpos)
GUISetState(@SW_SHOW)
$openfile = GUICtrlCreateButton("Load file",5,5,50,20)
Local $filename = StringRegExpReplace($openfile, "^.*\\", "")
Local $cptotemp = FileCopy($openfile, @TempDir, 1+8)
Local $tempfile = @TempDir & "\" & $filename
$allinfo = _ImageGetInfo($tempfile)
;Read image dimensions and convert to number
$img_width_str = _ImageGetParam($allinfo, "Width")
$img_width = Number($img_width_str)
$img_height_str = _ImageGetParam($allinfo, "Height")
$img_height = Number($img_height_str)
GUISetState(@SW_SHOW)
$img_dim = GUICtrlCreateLabel("image dimensions: " & $img_width & " x " & $img_height, 5,25,120,20)
$msg = GUIGetMsg()
if $msg = $openfile Then FileOpenDialog("Please select image file", "", "Image files (*.jpg;*.tif;*.gif;*.bmp;*.png)",0)
;$file = FileOpenDialog("Please select image file", "", "Image files (*.jpg;*.tif;*.gif;*.bmp;*.png)",0);
$coordlabel = GUICtrlCreateLabel("Hotspot coordinates:",5,200,120,20)
$coordinput = GUICtrlCreateInput("",5,220,120,20)
Local $coordinates = GUICtrlRead($coordinput)
Local $coordinate = _StringExplode($coordinates, ",")
;MsgBox(0,"$coordinates",$coordinates)
$deltax = 0.5*($coordinate[2] - $coordinate[0])
$deltay = 0.5*($coordinate[3] - $coordinate[1])
En executant le script j'ai cette erreur:
"C:\Users\monuser\Dropbox\bbr\autoit\tooltest.au3" (35) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$deltax = 0.5*($coordinate[2] - $coordinate[0])
$deltax = 0.5*(^ ERROR
Je sais qu'une solution serait d'utiliser une inputbox et la aucun probleme, mais c'est tellement moche que je ne veux pas l'envisager.