Forums Développement Multimédia

Aller au contenu

- - - - -

Commandes javascript pour photoshop

PAO Photoshop

14 réponses à ce sujet

#1 Vincent B.

  • Guests

Posté 30 November 2009 - 17:32 PM

Bonjour !

Je suis entrain de faire un script photoshop, en ligne de code...
Je n'ai pas trop de connaissance, et je n'ai surtout trouvé aucun site internet pour m'aider dans ma tache... (Quelques articles de blog mais ca s'arrete là...)

J'aimerais savoir si quelqu'un connais ce genre de programmation, et surtout, comment résoudre mon problème:
Je cherche a établir une selection, la remplir en noir, et déselectionner...

Mais document.selection.select(array(0,0), array(0,20) [...] ) ne fonctionne pas...

Cordialement,

Vincent BESNARD

#2 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 30 November 2009 - 17:41 PM

Salut
Tu trouveras la doc nécessaire dans le répertoire Scripting de Adobe Photoshop
voir image jointe :)

Fichier(s) joint(s)

  • Fichier joint  Image 1.png   65.19 Ko   95 téléchargement(s)


#3 Vincent B.

  • Guests

Posté 30 November 2009 - 17:46 PM

Justement !
En utilisant leurs selection.select, ça ne fonctionne pas...

J'y retourne ! :)

#4 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 30 November 2009 - 18:16 PM

sinon, voici le code :

var curDoc = app.activeDocument;

var strokeColor = new SolidColor();
strokeColor.cmyk.cyan = 20;
strokeColor.cmyk.magenta = 90;
strokeColor.cmyk.yellow = 50;
strokeColor.cmyk.black = 50;


var selectionBounds = [[75,75],[125,75],[125,125],[75,125]];
curDoc.selection.select(selectionBounds,SelectionType.REPLACE,0,false);

curDoc.selection.fill(strokeColor);
curDoc.selection.deselect();

#5 Vincent B.

  • Guests

Posté 30 November 2009 - 18:19 PM

Bonsoir,

Merci pour ton code, j'ai trouvé comment faire, et j'ai utiliser ça pour remplir:
DocActif.selection.fill(L_couleur_noire);

selection.select(selectionBounds,SelectionType.REPLACE,0,false);

Quelle est la différence avec votre code?

#6 Vincent B.

  • Guests

Posté 30 November 2009 - 18:46 PM

Je peux remettre une question?

Comment avoir la largeur d'un calque texte?

J'utilise var LargeurTexte = (oLayer.bounds[2] - oLayer.bounds[0]);
Mais ca retourne 0px...

#7 Vincent B.

  • Guests

Posté 02 December 2009 - 20:41 PM

Personne?

#8 Eddy.vh

    Éternel apprenti.

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1194 messages

Posté 03 December 2009 - 06:15 AM

Bonjour Vincent...


Loic apparait STP je t'ai envoyé ce membre étant sur que tu pourrais l'aider... Merci ;-)

#9 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 03 December 2009 - 10:13 AM

Voir le messageedfred, le 03 December 2009 - 06:15 AM, dit :

Bonjour Vincent...


Loic apparait STP je t'ai envoyé ce membre étant sur que tu pourrais l'aider... Merci ;-)
hello,
Je regarde.
Loic

#10 Loic Aigon

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 1662 messages

Posté 03 December 2009 - 10:20 AM

Voila,

Ben à priori, tu t'y prends bien pourtant.

var l = app.activeDocument.layers.getByName ("texte")
var lbounds = l.bounds;
var myWidth = lbounds[2]-lbounds[0];
alert(myWidth );

J'obtiens des résultats cohérents.

J'ai testé en convertissant le calque en objet dynamique et ca reste valable.

Loic

PS: depose ton psd en PJ, je testerai sur ton fichier.

#11 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 03 December 2009 - 10:30 AM

moi pareil quand je teste ça fonctionne et ça me ressort la largeur (width)
exemple :

var artLayerRef = activeDocument.artLayers.add();
artLayerRef.kind = LayerKind.TEXT
var textItemRef = artLayerRef.textItem
textItemRef.contents = "hello world hello world hello world"
var largeur = artLayerRef.bounds[2]
textItemRef.contents = largeur

#12 filimage

    Ceinture Blanche

  • Members
  • Pip
  • 1 messages

Posté 17 April 2017 - 12:48 PM

Hello à tous je recherche un code pour effacer tous les tracés en même temps :)
Merci

#13 JRB

    abracadabrantesque

  • Members
  • PipPipPipPipPipPipPipPip
  • 1856 messages

Posté 20 April 2017 - 09:09 AM

Image IPB
Acrobate, InDesigner et Photoshopographe
abracadabraPDF.net - MagicAPPs.mobi

#14 elle-ere

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 348 messages

Posté 26 April 2017 - 21:28 PM

Bonjour à tous,
Réponse pour les ateliers filimage !
Les tracés, ce sont bien les tracés vectoriels ?
Je me suis spécialisé dans la rédaction de scripts pour Illustrator,
Dans ce logiciel, pour effacer tous les tracés (JavaScript), une seule ligne de code suffit :
// JavaScript Document pour Illustrator
activeDocument.pathItems.removeAll();
Par curiosité, j'ai jeté un œil sur le fichier Photoshop-CS6-JavaScript-Ref.pdf, téléchargé pour l'occasion,
je n'avais jamais fait de script pour Photoshop.
J'avoue que malgré quelques similitudes avec AI c'est très déroutant...
Je propose le code suivant ; c'est peut-être une approche de ce que vous cherchez ?

// JavaScript Document pour Photoshop
  var removeArtLayer =  true; // supprime les calques associés au(x) tracé(s)
  var docRef = app.activeDocument;
  var nbArtLayer = docRef.artLayers.length; // Nombre de calque(s) hors groupe de calques
  var currentLayer; // calque actif sur lequel on veut agir
        for (var i = 0, j = 0; i < nbArtLayer; i++, j++) {
          currentLayer = docRef.artLayers[j];
          docRef.activeLayer = currentLayer;
                if (!currentLayer.allLocked) { // si non verrouillé
                  if (docRef.pathItems.length != 0) { // si présence de tracé(s)
                  alert("docRef.artLayers["+i+"].pathItems.length = "+docRef.pathItems.length);
                        docRef.pathItems.removeAll(); // on efface tout
                          if (removeArtLayer) {
                                currentLayer.remove(); // on efface le calque associé
                                j--; // on remonte dans la pile des calques
                          }
                  }
                }
        }
//-------------------------
 
Ce qui n'est pas ordinaire est que docRef.pathItems.length devrait être le nombre de tracés du document
PathItems -> The collection of PathItem objects in a document.
alors que c'est plutôt le nombre de tracés du calque courant ?
C'est un peu innabituel pour moi, Je pense que ça fonctionne correctement...
Dans ce script on traite uniquement les calques dont le parent est l'application (app.activeDocument).
(Je passe les détails)
Pour le principe, j'ai testé sur PS CS6
Restait à traiter le contenu des groupes de calques et les imbrications de groupes.
Ce qui est fait :
Le script est complet avec suppression des calques associés aux tracés (de type SOLIDFILL)
Si vous êtes intéressé,.. Toujours sur ce principe...

De elleere

Ps je n'ai pas trouvé comment détecter si un calque est vide ou non ??
afin de pouvoir éventuellement supprimer les calques devenus vides.
Pour Illustrator c'est simple :
if (currentLayer.pageItems.length == 0) le calque est vide

#15 elle-ere

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 348 messages

Posté 03 May 2017 - 18:53 PM

Bonjour à tous,
Merci pour votre aide :roll:
Comment détecter si un calque est vide ou non ?
Avec un peu de persévérence, voici la solution

// pour le calque lr
if (LayerKind.TEXT == lr.kind){ // calque-TEXT
        if ("" == lr.textItem.contents) lr.remove();
        }else{ // autres
          if (0 == lr.bounds[2] && lr == o.bounds[3]) {
          //largeur = hauteur = 0
                lr.remove();
          }
        }
 

Les ateliers filimage, pas de réponse ??

De elleere



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP