IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Photoshop (bibliothèque VBS)


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 413
    Par défaut Photoshop (bibliothèque VBS)
    Bonjour,

    Je cherche une âme charitable pour m'aider à taper 2 ou 3 lignes de code, pas plus

    Je termine une petite application en VB.NET qui utilise la bibliothèque VBS de Photoshop. IL n'y a aucune documentation sur internet, mise à part l'eternel "Guide de référence" produit par Adobe. Jusqu'a present, j'ai réussi à adapter le code, non pas sans mal, mais là, je suis arrivé au bout de mes comptétences...

    Je cherche à selectionner la zone de transparence d'un calque (via le code). Dans Photoshop, ça revient à ce que l'utilisateur appuie sur la touche Crtl et clique sur la miniature du claque (voir pièce jointe) ou "menu Sélection >> Récupérer la sélection..." (garder les options par défaut de la fenetre).

    Si ça peut aider, j'ai trouvé ça dans l'explorateur d'objets de VB 2008 : "Photoshop.PsChannelType.psSelectedAreaAlphaChannel". Sinon Photoshop utilise majoritairement les tableaux.

    Ce qui marche dans la procédure :
    Déclaration : Public PSref As Photoshop.Application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PSref.ActiveDocument = PSref.Documents.Item(2) 'document 2 actif
    PSref.ActiveDocument.ActiveLayer = PSref.ActiveDocument.Layers.Item(1) 'sélection du calque 1
    'le code que je cherche à mettre ici
    PSref.ActiveDocument.Paste() 'colle (utilisation du press-papiers)
    Je vais devoir mettre tout ça dans une boucle, car l'oppération peut avoir besoin d'être répétée 63 fois

    Merci d'avance pour tout type d'aide !



    Guide des scripts Photoshop CS3 (fr) :
    http://pbigot.org/Documentation/Scri...shop%20CS3.pdf

    Réf. VBScript Photoshop CS3.pdf (eng)
    http://www.scribd.com/doc/13282783/P...CS3VBScriptRef
    Images attachées Images attachées  

  2. #2
    Membre très actif Avatar de arnofly
    Homme Profil pro
    Développeur Web / Webdesigner
    Inscrit en
    Mai 2007
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web / Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 413
    Par défaut
    Bon, j'avais tout faut, ou presque...

    Je me suis bien arraché les cheveux, mais voilà une solution :
    2 documents sont ouverts dans Photoshop CS3 (sans doute compatible) CS2.

    Logique du code :
    - Activation du document n°1
    - sélection entière du docuement n°1
    - Copie dans le press-papiers de tous les calques visibles

    - Boucle n°1 : Place tous les calques du document n°2 dans l'état : invisible

    Debut de la boucle n°2
    - Activation du document n°2
    - Sélection de la couche transparente de ce document
    - Place le calque "i" dans l'état : visible
    - Activation du calque "i"
    - Colle le contenu du press-papiers dans le claque "i" en concervant sa zone transparente
    - Place le calque "i" dans l'état : invisible
    FIN de la boucle n°2, retour au debut de la boucle

    - Boucle n°3 : rend visible tous les claques
    FIN DU CODE

    NB : cette routine est utile pour créer une sorte de planche contact. En l'occurence, je m'en sert pour créer des étiquettes. Le document n°1 est à la taille d'une étiquette et le document n°2 au format A4 (contient 63 calques dont leur taille égale au document n°1) J'ai simplié mon code pour le rendre plus clair, mais on peut tres bien modifier certains calques (texte par exemple) avant de remplir la feuille A4.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Dim PSdoc_Etiquette = PSref.Documents.Item(1)
    Dim PSdoc_PlancheContact = PSref.Documents.Item(2)
     
    PSref.ActiveDocument = PSdoc_Etiquette
    PSdoc_Etiquette.Selection.SelectAll()
    PSdoc_Etiquette.Selection.Copy(True)
     
     
    PSref.ActiveDocument = PSdoc_PlancheContact
     
    'Photoshop commence à 1 et non 0
    For i = 1 To PSdoc_PlancheContact.ArtLayers.Count
        PSdoc_PlancheContact.ArtLayers.Item(i).Visible = False
    Next
     
    For i = 1 To PSdoc_PlancheContact.ArtLayers.Count
        PSdoc_PlancheContact.ArtLayers.Item(i).Visible = True
        PSdoc_PlancheContact.ActiveLayer = PSdoc_PlancheContact.ArtLayers.Item(i) 'Sélection "Calque i"
        Dim myZoneCalque = PSdoc_PlancheContact.Channels(1)
        PSdoc_PlancheContact.Selection.Load(myZoneCalque, 1, True) 'psReplaceSelection est égale à (1), (True) est égale à la zone remplie du calque
        PSdoc_PlancheContact.Paste(True) 'Colle (True = dans le calque actif)
        PSdoc_PlancheContact.ArtLayers.Item(i).Merge() 'Fusionne
        PSdoc_PlancheContact.ArtLayers.Item(i).Visible = False
    Next
     
    For i = 1 To PSdoc_PlancheContact.ArtLayers.Count
        PSdoc_PlancheContact.ArtLayers.Item(i).Visible = True
    Next
    N'oubliez pas d'importer la bibliothèque de Photoshop dans votre projet.

    Quelques liens utiles (il y en a si peu) :
    http://www.codeproject.com/KB/vb/AutomatePhotoshop.aspx
    http://photoshoptutorials.ws/
    http://morris-photographics.com/phot...cripting2.html
    http://www.hennique.fr/automation.htm

    ça servira peut être à quelqu'un un jour... Et peut être bien à moi même, si je deviens amnésique

Discussions similaires

  1. Création d'un vbs qui permettrait d'arreter l'agent sql
    Par cracosore dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 03/02/2004, 10h22
  2. [MFC]bibliothèques Jpeg
    Par kor dans le forum MFC
    Réponses: 3
    Dernier message: 06/01/2004, 15h08
  3. Bibliothèque Gcc/mingw 2.95.3.6
    Par richard dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 11/10/2003, 22h54
  4. Réponses: 8
    Dernier message: 03/09/2003, 00h47
  5. Bibliothèques et documentation
    Par Anonymous dans le forum OpenGL
    Réponses: 4
    Dernier message: 01/04/2002, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo