#Include #Include #Include ; #INDEX# ======================================================================================================================= ; Title .........: photoshop ; AutoIt Version : 3.1.1++ ; Language ......: je sais pas ; Description ...: quelques Func pour manipuler Ps CS5 ; Author(s) .....: Kriss Cornello (http://scantradsquare.toile-libre.org) ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ;Ps_Open ;Ps_Show ;Ps_GetFileTypes ;Ps_SetUnits ;Ps_Doc_Add ;Ps_Doc_Load ;Ps_Doc_Close ;Ps_Doc_SaveAs_PSD ;Ps_Doc_Activate ;Ps_Doc_Trim ;Ps_Doc_Duplicate ;Ps_Doc_Get ;Ps_Doc_Exist ;Ps_Docs_ListToArray ;Ps_Layer_SetActiveLayer ;Ps_Layer_GetNum ;Ps_TextArea_Add ;Ps_Deselect ;Ps_GetSelLimit ; =============================================================================================================================== ; #INTERNAL_USE_ONLY# =========================================================================================================== ;_Set_Obj ; =============================================================================================================================== #Tidy_Off =================================================== #CONSTANTS# ======================================================== Global Const $SaveOptions_SAVECHANGES = 1 Global Const $SaveOptions_DONOTSAVECHANGES = 2 Global Const $LayerKind_TEXT = 2 Global Const $Justification_CENTERJUSTIFIED = 2 Global Const $EventId_Align = 1097623406 Global Const $DialogModes_All = 1 Global Const $DialogModes_Error = 2 Global Const $DialogModes_No = 3 Global Const $Unit_Px[3] = [ 1, 1, $DialogModes_No ];old: 352 ;~ Global Const $SaveOptions_NOTSAVEDFILE = 8103 #Tidy_On =============================================================================================================================== ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Open ; Description ...: Ouvre Photoshop si il ne l'est pas déjà. ; Return values .: Success - l'obj photoshop ; Failure - -1 ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Open() Local $oPs = ObjCreate("Photoshop.Application") If Not IsObj($oPs) Then Return -1 Return $oPs EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Show ; Description ...: Affiche Photoshop ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Show($oPs) If Not IsObj($oPs) Then Return SetError(-1) $oPs.bringToFront() EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_GetFileTypes ; Description ...: Retourne un tableau des types des fichiers pris en consideration ; Parameters ....: $oPs - l'obj photoshop ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_GetFileTypes($oPs) Return $oPs.windowsFileTypes EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_SetUnits ; Description ...: Change les unité ; Parameters ....: $oPs - l'obj photoshop ; $Unit_DATA - Optionnal: tableau d'unité [rulerUnits, typeUnits, displayDialogs] ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_SetUnits($oPs, $Unit_DATA = Default) Switch @NumParams Case 1 Local $OLD_Unit[3] $OLD_Unit[0] = $oPs.preferences.rulerUnits $OLD_Unit[1] = $oPs.preferences.typeUnits $OLD_Unit[2] = $oPs.displayDialogs ; Set Adobe Photoshop CS5 to use pixels and display no dialogs $oPs.preferences.rulerUnits = $Unit_Px[0] $oPs.preferences.typeUnits = $Unit_Px[1] $oPs.displayDialogs = $Unit_Px[2] Return $OLD_Unit Case 2 ;Reset the application preferences If Not (UBound($Unit_DATA)>=3) Then Return $oPs.preferences.rulerUnits = $Unit_DATA[0] $oPs.preferences.typeUnits = $Unit_DATA[1] $oPs.displayDialogs = $Unit_DATA[2] Return 1 EndSwitch EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Add ; Description ...: Crée un nouveau document ; Parameters ....: $oPs - l'obj photoshop ; $AsRecent - Optional: Si true, crée un document par defaut (celon le contenu du presse papier ou celon le dernier model) ; $NewDocName - Optional: Nom du document ; $DocWidth - Optional: Largeur du document ; $DocHeight - Optional: Hauteur du document ; $DocRes - Optional: Résolution ; Return values .: Success - l'obj du document ; Failure Set @error to ; - -1: $oPs n'est pas un obj ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_Add($oPs,$AsRecent=True, $NewDocName='Sans titre', $DocWidth=1, $DocHeight=1, $DocRes=72);obj, boolen, cm, cm, px/pouces, String If Not IsObj($oPs) Then Return SetError(-1) If $AsRecent Then Return $oPs.documents.add() Return $oPs.documents.add($DocWidth, $DocHeight, $DocRes, $NewDocName); NewDocumentMode.RGB, DocumentFill.TRANSPARENT, 1, nDocBitsPerPixel) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Load ; Description ...: Ouvre un document ; Parameters ....: $oPs - l'obj photoshop ; $FullPath - Le chemain complet du fichier ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_Load($oPs,$FullPath) If Not IsObj($oPs) Then Return SetError(-1) If Not FileExists($FullPath) Then Return SetError(1) $oPs.load($FullPath) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Close ; Description ...: Ouvre un document ; Parameters ....: $oPs - l'obj photoshop ; $save - Optional: ; - 0 sans sauvgarde ; - 1 sauvgarde avant fermeture ; Author ........: Kriss Cornello ; Remarks .......: Si le fichier vien d'etre créé, une fenetre FileSaveDialog va apparaître ; =============================================================================================================================== Func _Ps_Doc_Close($oPs, $save=0) If Not IsObj($oPs) Then Return SetError(-1) If $save <= 0 Then $save=0 If $save >= 0 Then $save=1 $oPs.activeDocument.close( _Iif($save,$SaveOptions_SAVECHANGES,$SaveOptions_DONOTSAVECHANGES) ) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_SaveAs_PSD ; Description ...: Sauvgarde le fichier en tant que PSD ; Parameters ....: $oPs - l'obj photoshop ; $FileFullName - chemain du nouvrau fichier avec '.psd' ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_SaveAs_PSD($oPs, $FileFullName, $oFile=-1) $obj = _Set_Obj($oPs, $oFile) $obj.saveAs(StringLower($FileFullName)) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Activate ; Description ...: Active un document ; Parameters ....: $oPs - l'obj photoshop ; $index - num du document (le 1er est 0) ou l'obj du document ; Return values .: Failure Set @error to ; - 1: $index n'est ni un num ni un obj ; - 2: $index < 0 ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_Activate($oPs,$index=0) If Not IsObj($oPs) Then Return SetError(-1) If IsObj($index) Then $oPs.activeDocument = $index ElseIf IsNumber($index) Then If $index<= 0 Then Return SetError(2) $oPs.activeDocument = $oPs.documents($index) Else Return SetError(1) EndIf EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Trim ; Description ...: Rogner un document ; Parameters ....: $oPs - l'obj photoshop ; $flag - affiche la fenetre de séléction des opts ; $oFile - Optionnal: l'obj du document. la valeur par defaut est le document séléctionné ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; - -2: $oFile n'est pas un obj ; - -3: aucun document n'est ouvert ; - 1: $index n'est ni un num ni un obj ; - 2: $index < 0 ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_Trim($oPs, $flag=1, $oFile=-1);$flag montrer ou non la fenetre des opt $obj = _Set_Obj($oPs, $oFile) If @error Then Return SetError(@error) If Number($flag) < 1 Then $flag=0 If $flag > 1 Then $flag=1 $obj.trim($flag) EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Duplicate ; Description ...: dupliquer un document ; Parameters ....: $oPs - l'obj photoshop ; $oFile - Optionnal: l'obj du document. la valeur par defaut est le document séléctionné ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; - -2: $oFile n'est pas un obj ; - -3: aucun document n'est ouvert ; Author ........: Kriss Cornello ; =============================================================================================================================== Func _Ps_Doc_Duplicate($oPs,$oFile=-1) $obj = _Set_Obj($oPs, $oFile) If @error Then Return SetError(@error) Return $obj.duplicate() EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Get ; Description ...: Obtenir des information à propos un document ; Parameters ....: $oPs - l'obj photoshop ; $flag - type de donné à lire: name / fullname / resolution / height / width / saved / active layer / componentChannels ; ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; - -2: $oFile n'est pas un obj ; - -3: aucun document n'est ouvert ; - 1: $flag inconu ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_Get($oPs,$flag='name', $oFile=-1) $obj = _Set_Obj($oPs, $oFile) If @error Then Return SetError(@error) Switch $flag Case 'name' Return $obj.name Case 'fullname' Return $obj.fullName Case 'resolution' Return $obj.resolution Case 'height' Return $obj.height * $obj.resolution / 72.0 Case 'width' Return $obj.width * $oPs.activeDocument.resolution / 72.0 Case 'saved' Return $obj.saved Case 'active layer'; name' Return $obj.activeLayer;.name Case 'componentChannels';Gris/RVB/... $numChannels = $obj.componentChannels;.length Local $array[1] For $numChannel In $numChannels _ArrayAdd($array, $numChannel.name) Next $array[0] = UBound($array)-1 Return $array Case Else Return SetError(1) EndSwitch EndFunc ;Files ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Exist ; Description ...: verifier si un doccument existe d'après le nom ; Parameters ....: $oPs - l'obj photoshop ; $name - nom du document si indefinit le fonction va chrcher si il y'a au moin un document chargé ; Return values .: Success - True: trouvé ; Failure - False: pas trouvé ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Doc_Exist($oPs,$name='') If Not IsObj($oPs) Then Return SetError(-1) $Documents = $oPs.Documents If Not IsObj($Documents) Then Return SetError(-4) If $name='' Then For $Document In $Documents Return True Next Else For $Document In $Documents If $Document.name = $name Then Return True Next EndIf Return False EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Docs_ListToArray ; Description ...: liste les documents chargés ; Parameters ....: $oPs - l'obj photoshop ; Return values .: Success 1D Array of $Document's name ; Failure Set @error to 1 ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Docs_ListToArray($oPs) Local $List[1] $Documents = $oPs.Documents If Not IsObj($Documents) Then Return SetError(1) For $Document In $Documents _ArrayAdd($List,$Document.name) Next $List[0] = UBound($List)-1 If $List[0] = 0 then Return 0 Return $List EndFunc ;Layer ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Layer_ListToArray ; Description ...: liste les calques d'un document ; Parameters ....: $oPs - l'obj photoshop ; $oFile - Optionnal: l'obj du document. la valeur par defaut est le document séléctionné ; Return values .: Success 1D Array of $Layer's name ; Failure Set @error to 1 ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Layer_ListToArray($oPs, $oFile=-1) Local $obj = _Set_Obj($oPs, $oFile) If @error Then Return SetError(@error) $Layers = $obj.Layers If Not IsObj($Layers) Then Return SetError(1) Local $array[1] For $Layer in $Layers _ArrayAdd($array,$Layer.name) Next $array[0] = UBound($array)-1 Return $array EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Doc_Activate ; Description ...: Selectionne un calque ; Parameters ....: $oPs - l'obj photoshop ; $index - num du calque (le 1er est 0) ou l'obj du document ; Return values .: Failure Set @error to ; - 1: $index n'est ni un num ni un obj ; - 2: $index < 0 ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Layer_SetActiveLayer($oPs, $index=1) ;~ If ($index < 1) Or ($index > _Toshop_Layer_GetNum($oToshop)) Then Return SetError (2);Take much time but it's importent If Not IsObj($oPs) Then Return SetError(-1) If IsObj($index) Then $oPs.activeDocument.activeLayer = $index ElseIf IsNumber($index) Then If $index<= 0 Then Return SetError(2) $oPs.activeDocument.activeLayer = $oPs.documents.layers($index) Else Return SetError(1) EndIf EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Layer_GetNum ; Description ...: Retourne le nombre de calque dans un document (la function est très lente) ; Parameters ....: $oPs - l'obj photoshop ; $oFile - Optionnal: l'obj du document. la valeur par defaut est le document séléctionné ; Return values .: Success Le nombrede calques ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; - -2: $oFile n'est pas un obj ; - -3: aucun document n'est ouvert ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Layer_GetNum($oPs, $oFile=-1) Local $obj = _Set_Obj($oPs, $oFile) If @error Then Return SetError(@error) $Layers = $obj.Layers Local $Num = 0 For $Layer in $Layers $Num += 1 Next Return $Num EndFunc ;TEXT Layer ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_TextArea_Add ; Description ...: Crée une zone de texte ; Parameters ....: $oPs - l'obj photoshop ; $Text - Contenu de la zone de texte ; $Size - Taille du texte (en pt depuis Ps CS5) ; $font - "Postscript name" de la police. obtenez le postscript name d'une police en utilisant cette fonction: http://www.autoitscript.fr/forum/viewtopic.php?f=21&t=9529&p=64709#p64709 ; $FauxBold - Gras ; $FauxItalic - Italique ; Return values .: Success - l'obj Layer ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_TextArea_Add($oPs, $Text, $Size = 17, $font="ArialMT", $FauxBold = False, $FauxItalic = False) $oLayer = $oPs.activeDocument.artLayers.add() $oLayer.kind = $LayerKind_TEXT With $oLayer.textItem .Justification = $Justification_CENTERJUSTIFIED .font = $font .size = Number($Size) If $FauxBold Then .fauxBold = $FauxBold If $FauxItalic Then .fauxItalic = $FauxItalic .contents = $Text EndWith Return $oLayer EndFunc ;Sel ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_Deselect ; Description ...: Déselectionner ; Return values .: Failure Set @error to ; - -1: $oPs n'est pas un obj ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_Deselect($oPs) If Not IsObj($oPs) Then Return SetError(-1) $oPs.activeDocument.selection.deselect() EndFunc ; #FUNCTION# ==================================================================================================================== ; Name...........: Ps_GetSelLimit ; Description ...: Retourne un tableau contenant les limites d'une séléction ; Parameters ....: $oPs - l'obj photoshop ; Author ........: Kriss Cornello ; =============================================================================================================================== Func Ps_GetSelLimit($oPs) If Not IsObj($oPs) Then Return SetError(-1) Return $oPs.activeDocument.selection.bounds EndFunc ;Inner ; #FUNCTION# ==================================================================================================================== ; Name...........: _Set_Obj ; Description ...: Rogner un document ; Parameters ....: $oPs - l'obj photoshop ; $flag - affiche la fenetre de séléction des opts ; $oFile - Optionnal: l'obj du document. la valeur par defaut est le document séléctionné ; Return values .: Failure - -1: $oPs n'est pas un obj ; - -2: $oFile n'est pas un obj ; - -3: aucun document n'est ouvert ; Author ........: Kriss Cornello ; =============================================================================================================================== Func _Set_Obj($oPs, $oFile) Local $obj If ($oFile=-1) Then If Not IsObj($oPs) Then Return SetError(-1) If IsArray(Ps_Docs_ListToArray($oPs)) Then $obj = $oPs.activeDocument Else Return SetError(-3) EndIf Else If Not IsObj($oFile) Then Return SetError(-2) $obj = $oFile EndIf Return $obj EndFunc ;Other ;$oToshop.beep() ;$oToshop.refresh() ;~ $oToshop.ResizeTheImage(26.63, 38.81) ;~ $oToshop.activeDocument.resizeImage(newWidth, newHeight, resolution, ResampleMethod.BICUBIC) ;_Write($oToshop.systemInformation) ;_Write($oToshop.version) ;~ $msg = $oToshop.activeDocument.activeHistoryState