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

JavaScript Discussion :

JavaScript pour Photoshop cs2 - Faire une grille d'image pour tirages


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut JavaScript pour Photoshop cs2 - Faire une grille d'image pour tirages
    Bonjour.
    Je cherche à programmer en javascript photoshop pour associer par paire deux images en verticale sur une image vierge de 30,5x45 cm afin de faire tirer l'image sur une machine sortant des images 30,5x45 cm
    Je peux l'écrire en Français, mais pas en Java script
    Pouvez vous m'aider pour faire ce script qui pourrait intéresser certains. Pour faire du tirages économiques sur de grandes feuilles, il peux être performant (plein de 10x15 sur un a3 par exemple)

    J'ai un dossier plein d'images horizontales et verticales de différentes tailles

    Le script doit :
    ouvrir l' image 1 de mon dossier
    faire tourner de -90 si elle est horizontale
    lui donner une taille
    la copier
    la fermer sans rien changer (c'est ma source)
    la coller sur une feuille blanche 30x45cm de 320dpi à un endroit précis
    ouvrir l'image 2 de mon dossier
    faire tourner de -90 si elle est horizontale
    lui donner une taille
    la copier
    la fermer sans rien changer (c'est ma source)
    la coller sur la feuille blanche à un endroit précis à coté de la première
    Aplatir cette feuille blanche
    Enregistrer cette feuille blanche dans un dossier, en jpg 12 (par exemple, avec un nom (tirage 1), appliquer un profil éventuellement
    Faire ca pour toutes les images présentes dans mon dossier (boucle)

    Je ne sais pas vraiment comment mi prendre.
    J'ai quelques souvenir d'apple script et je peux comprendre un script javascript mais de là à l'écrire ?

    Si vous pouviez m'aider un peu

    Bien cordialement
    Images attachées Images attachées  

  2. #2
    Membre Expert Avatar de txuku
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 980
    Par défaut
    Bonjour spaceodity

    Je dois posseder a peu pres toutes ces fonctions dans mes stocks......

    Si je te fais parvenir des scripts les contenant pour que tu les arranges a ta sauce cela pourrait t il te convenir ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Bonjour txuku

    Oui je pense m'en sortir avec tes scripts.
    C'est un peu commenté quand même car je ne suis pas un expert !
    Merci

  4. #4
    Membre Expert Avatar de txuku
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 980
    Par défaut
    Finalement j ai prefere executer une grande partie du travail.

    En gros cela fonctionne mais il faut regler les deplacements et les tailles d images........

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    //ForPrint.jsx
     
    startRulerUnits = app.preferences.rulerUnits; // preferences de depart a remettre a la fin
    startTypeUnits = app.preferences.typeUnits
    startDisplayDialogs = app.displayDialogs
     
    app.preferences.rulerUnits = Units.CM; // PIXELS POINTS PERCENT .... unite desiree dans le script
    app.preferences.typeUnits = TypeUnits.PIXELS
    app.displayDialogs = DialogModes.NO
     
    //Choisir le dossier
     
    //Une boite de dialogue pour choisir le dossier
    //var inputFolder =  Folder.selectDialog("Selectionner le DOSSIER DES IMAGES A TRAITER"); 
     
    //Autre solution encore mettre l adresse complete avec le nom d USER a la place du mien " /moi "
     
    var inputFolder = new Folder("C:/Documents and Settings/moi/Mes documents/ALAIN/TEST/");
     
     
    outputFolder = inputFolder; // le meme dossier pour l exportation
     
     
    largeurDesiree = 100 //mettre la largeur desiree pixels en reglant par des essais
     
     
    //Ouvrir les images
     
    a = 1; //Incrementation des images Tirage1 2 3 ......
     
    OpenFolder()
     
    function OpenFolder()
    {
             filesOpened = 0;
     
             fileList = inputFolder.getFiles();
     
            for (  i = 0; i < fileList.length; ) 
            {
     
                if ( (fileList.length - i) < 2 )
                 {
                    // Create a new document
               var h = 45;
               var l = 30;
                    newDocumentRef  = app.documents.add(l, h, 320.0, "Vide", NewDocumentMode.RGB, DocumentFill.WHITE, 1)
                    for (  j = 0; fileList.length - i > 0 ; j++ ) 
                    { 
                      travailFaire();  
                    }
     
                    sauverDoc();
                 }
                else
                {
                // Create a new document
               var h = 45;
               var l = 30;
                newDocumentRef  = app.documents.add(l, h, 320.0, "Vide", NewDocumentMode.RGB, DocumentFill.WHITE, 1)
                for (  j = 0; j < 2 ; j++ )
     
                 { 
                      travailFaire()        
                 } 
                 sauverDoc()
                 a++;       
                }
             }
            return filesOpened;
    }
     
     
     
    function travailFaire()
    {
     
                            open( fileList[i] );
                            filesOpened++;
                             docRef = activeDocument;
     
                                        if (docRef.width > docRef.height) // redresser si besoin
                                         {
                                 docRef.rotateCanvas(-90);
                             }
                              tailleImageLarge = docRef.width,
                              rapportLH = docRef.height/docRef.width;
     
                              tailleImageLarge = largeurDesiree;
     
                              tailleImageHaut =tailleImageLarge*rapportLH;
     
                                          docRef.resizeImage(tailleImageLarge, tailleImageHaut, 320.0, ResampleMethod.BICUBIC )
     
                        docRef.selection.selectAll()
              docRef.selection.copy()
              docRef.flatten();
                        docRef.close(SaveOptions.DONOTSAVECHANGES) // fermer l image sans sauver
     
              var myLayerSets = new Array()
     
                        activeDocument = newDocumentRef  
                var layerSetRef = newDocumentRef .layerSets.add();
       var layerRef = layerSetRef.artLayers.add();
       newDocumentRef .activeLayer = layerRef;
       app.activeDocument.paste(); 
     
              // placement des images 1 et 2 : faire des essais
     
              switch(j)
              {
                case j = 0:
                  default:
                  deplH = 0;
                  deplV = -20
                  break;
     
                  case j = 1:
                  deplH =  100;
                  deplV = 100;
                  break;
     
              }
     
                        layerRef.translate(deplH, deplV)
     
              i++;
     
    }
     
     
     
     
    function sauverDoc()   //sauver le nouveau document Tirage(n)
    {
               newDocumentRef.flatten();
     
               Nom = "Tirage";
     
               var jpegOptions = new JPEGSaveOptions();
    jpegOptions.quality = 12;
    jpegOptions.embedColorProfile = false;
    app.activeDocument.saveAs( File( outputFolder +"/" + Nom + a + ".jpg" ), jpegOptions, false);
     
     
             newDocumentRef.close();
     
    }
     
     
     
    //Restaurer  les preferences d origine a la fin de l execution du script
     
    app.preferences.rulerunits = startRulerUnits
    app.preferences.typeunits = startTypeUnits
    app.displayDialogs = startDisplayDialogs
    A ta disposition pour les problemes de peaufinage.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Salut,

    Des petits trucs qui pourront peut être aider.

    Pour les déplacements :
    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
    29
    30
    31
    32
    33
    34
    /* ADS */
    var AlignDistributeSelector = {
    		// +ADSTypes
    		CENTERV:		charIDToTypeID("AdCV"),
    		CENTERH:		charIDToTypeID("AdCH"),
    		TOP: 			charIDToTypeID("AdTp"),
    		BOTTOM:		charIDToTypeID("AdBt"),
    		LEFT: 		charIDToTypeID("AdLf"),
    		RIGHT:		charIDToTypeID("AdRg"),
    		HORIZONTAL: charIDToTypeID("AdHr"),
    		VERTICAL: 	charIDToTypeID("AdVr"),
     
    		// +exec( ADSType )							
    		exec : function ( ADSType ) {
    		   var ad = new ActionDescriptor();
    		   var rf = new ActionReference();
     
    		   rf.putEnumerated( this._2, this._3, this._4 );
     
    		   ad.putReference( this._1, rf );
    		   ad.putEnumerated( this._5, this._6, ADSType );
     
    		executeAction( this._0, ad, DialogModes.NO );
    		},
     
    		// -Privates	
    		_0 : charIDToTypeID( "Algn" ),
    		_1 : charIDToTypeID( "null" ),
    		_2 : charIDToTypeID( "Lyr " ),
    		_3 : charIDToTypeID( "Ordn" ),
    		_4 : charIDToTypeID( "Lnkd" ),
    		_5 : charIDToTypeID( "Usng" ),
    		_6 : charIDToTypeID( "ADSt" )
    		};
    S'utilise comme ceci (Centré à gauche) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AlignDistributeSelector.exec( AlignDistributeSelector.CENTERV );
    AlignDistributeSelector.exec( AlignDistributeSelector.LEFT );
    Pour le resize (Garde les proportions) :
    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
    /* Document resizing */
    function docResize(aDoc, maxWidth, maxHeight) {
    	var w = aDoc.width;
    	var h = aDoc.height;
    	w = Math.max(w, maxWidth);
    	h = Math.max(h, maxHeight);	
    	if((w > maxWidth) || (h > maxHeight)) {
    		var max = Math.max(w, h);
    		var nw, nh;
    		if( max == w ) {
    			nw = maxWidth;
    			nh = aDoc.height * (maxWidth / max);
    		}else{
    			nw = aDoc.width * (maxHeight / max);
    			nh = maxHeight;
    		}
    		aDoc.resizeImage( nw, nh, aDoc.resolution, ResampleMethod.BICUBICSMOOTHER );
    	}
    };
    Enfin, autre chose de très utile après chaque opération pour laisser le temps à photoshop de terminer son opération :
    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
    var Wait = 	{
    				// +event
    				REDRAWCOMPLETE:	charIDToTypeID( "RdCm" ),
     
    				// +exec( event )
    				exec : function ( event ) {
      					var ad = new ActionDescriptor();
     
      					ad.putEnumerated( this._1, this._1, event );
     
    					executeAction( this._0, ad, DialogModes.NO );
    				},
     
    				// -Privates
    				_0 : charIDToTypeID( "Wait" ),
    				_1 : charIDToTypeID( "Stte" ),
    				};
    S'utilise comme ceci, après un resize par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wait.exec( Wait.REDRAWCOMPLETE );

  6. #6
    Membre Expert Avatar de txuku
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 980
    Par défaut
    kernelfailure je mets de cote tes petits trucs !

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Merci Txuku et kernelfailure

    Je suis en train de tester le script de Txuku
    Il me crée bien le document vide, mais me signal une erreur 8000: Cannot open the file because the open options are incorrect

    line 78
    open(fileList{i});

    Je ne vois pas l'erreur, peut être de la syntaxe.

    J'ai ecrit { dans ce message car je ne sais pas taper le croché du script mais je n'ai rien touché.

    Je travail sur mac masi ce ne doit pas être là l'erreur

    Merci

    Spaceodity

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Citation Envoyé par spaceodity Voir le message
    J'ai ecrit { dans ce message car je ne sais pas taper le croché du script mais je n'ai rien touché.
    [ = shift + alt + 5 (au dessus de 'R' et 'T')
    ] = shift + alt + ) (au dessus de 'p' et '^')

    shift = Majuscule.

    Plein de caractères avec shift+alt :
    Ÿ´„”’[å»ÛÁØ]–
    ÆÅÊ‚™ŸªïŒ∏Ô¥
    Ω∑∆·flÎÍË|Ó‰#
    ≥›⁄¢√∫ı¿•\±


  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    ok merci pour les touches
    Mais je suis toujours aussi coincé avec cette erreur

    line 78
    open(fileList[i]);

  10. #10
    Membre Expert Avatar de txuku
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 980
    Par défaut
    Mac n est pas trop mon truc.....

    Une erreur au niveau du chemin ?

    Alors tu enleves les // ligne 14 ( //var inputFolder = )
    et tu les mets au debut de la ligne 18 ( var inputFolder = ).

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Non ce n'est pas ca
    J'ai bien utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var inputFolder =  Folder.selectDialog("Selectionner le DOSSIER DES IMAGES A TRAITER");
    que je trouve plus pratique

    J'ai bien annulé la ligne 18 avec //

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Txuku

    j'ai essayé ce script

    -------
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    //OuvrirFile.jsx
     
     
     
    OpenFolder();
     
     
     
    function OpenFolder(inputFolder) 
     
    {
     
     
     
             filesOpened = 0;
     
     
     
             //Boite de dialogue pour selectionner le dossier des images a traiter
     
             inputFolder =  Folder.selectDialog("Selectionner le DOSSIER DES IMAGES A TRAITER") 
     
     
             fileList = inputFolder.getFiles();
     
     
     
            for (  i = 0; i < fileList.length; ) 
     
            {
     
            open( fileList[i] );
     
              i++  
     
             }
     
            return filesOpened;
     
     
     
    }
    -------

    Il marche parfois, parfois pas.
    Parfois je l'ai arrété en cours de route.
    Mon erreur vient peut être que dans ces script une variable n'est pas réinitialisé au début ?
    C'est etrange

  13. #13
    Membre Expert Avatar de txuku
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 980
    Par défaut
    Peut etre ceci :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    //ForPrint.jsx
     
    startRulerUnits = app.preferences.rulerUnits; // preferences de depart a remettre a la fin
    startTypeUnits = app.preferences.typeUnits
    startDisplayDialogs = app.displayDialogs
     
    app.preferences.rulerUnits = Units.CM; // PIXELS POINTS PERCENT .... unite desiree dans le script
    app.preferences.typeUnits = TypeUnits.PIXELS
    app.displayDialogs = DialogModes.NO
     
    //Choisir le dossier
     
    //Une boite de dialogue pour choisir le dossier
    var inputFolder =  Folder.selectDialog("Selectionner le DOSSIER DES IMAGES A TRAITER"); 
     
    //Autre solution encore mettre l adresse complete avec le nom d USER a la place du mien " /moi "
    //var inputFolder = new Folder("C:/Documents and Settings/Compaq_Propriétaire/Mes documents/ALAIN/TEST/");
     
     
    outputFolder = inputFolder; // le meme dossier pour l exportation
     
     
    largeurDesiree = 100 //mettre la largeur desiree pixels en reglant par des essais
     
     
    //Ouvrir les images
     
    a = 1; //Incrementation des images Tirage1 2 3 ......
     
    OpenFolder()
     
    function OpenFolder()
    {
             filesOpened = 0;
     
             fileList = inputFolder.getFiles("*.jpg");
     
            for (  i = 0; i < fileList.length; ) 
            {
     
                if ( (fileList.length - i) < 2 )
                 {
                    // Create a new document
               var h = 45;
               var l = 30;
                    newDocumentRef  = app.documents.add(l, h, 320.0, "Vide", NewDocumentMode.RGB, DocumentFill.WHITE, 1)
                    for (  j = 0; fileList.length - i > 0 ; j++ ) 
                    { 
                      travailFaire();  
                    }
     
                    sauverDoc();
                 }
                else
                {
                // Create a new document
               var h = 45;
               var l = 30;
                newDocumentRef  = app.documents.add(l, h, 320.0, "Vide", NewDocumentMode.RGB, DocumentFill.WHITE, 1)
                for (  j = 0; j < 2 ; j++ )
     
                 { 
                      travailFaire()        
                 } 
                 sauverDoc()
                 a++;       
                }
             }
            return filesOpened;
    }
     
     
     
    function travailFaire()
    {
     
                            open( fileList[i] );
                            filesOpened++;
                             docRef = activeDocument;
     
                                        if (docRef.width > docRef.height) // redresser si besoin
                                         {
                                 docRef.rotateCanvas(-90);
                             }
                              tailleImageLarge = docRef.width,
                              rapportLH = docRef.height/docRef.width;
     
                              tailleImageLarge = largeurDesiree;
     
                              tailleImageHaut =tailleImageLarge*rapportLH;
     
                                          docRef.resizeImage(tailleImageLarge, tailleImageHaut, 320.0, ResampleMethod.BICUBIC )
     
                        docRef.selection.selectAll()
              docRef.selection.copy()
              docRef.flatten();
                        docRef.close(SaveOptions.DONOTSAVECHANGES) // fermer l image sans sauver
     
              var myLayerSets = new Array()
     
                        activeDocument = newDocumentRef  
                var layerSetRef = newDocumentRef .layerSets.add();
       var layerRef = layerSetRef.artLayers.add();
       newDocumentRef .activeLayer = layerRef;
       app.activeDocument.paste(); 
     
              // placement des images 1 et 2 : faire des essais
     
              switch(j)
              {
                case j = 0:
                  default:
                  deplH = 0;
                  deplV = -20
                  break;
     
                  case j = 1:
                  deplH =  100;
                  deplV = 100;
                  break;
     
              }
     
                        layerRef.translate(deplH, deplV)
     
              i++;
     
    }
     
     
     
     
    function sauverDoc()   //sauver le nouveau document Tirage(n)
    {
               newDocumentRef.flatten();
     
               Nom = "Tirage";
     
               var jpegOptions = new JPEGSaveOptions();
    jpegOptions.quality = 12;
    jpegOptions.embedColorProfile = false;
    app.activeDocument.saveAs( File( outputFolder +"/" + Nom + a + ".jpg" ), jpegOptions, false);
     
     
             newDocumentRef.close();
     
    }
     
     
    app.preferences.rulerUnits = startRulerUnits // retour aux preferences de depart

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    ok ca marche bien comme ça

    J'ai essayé avec un dossier contenant des tif avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     fileList = inputFolder.getFiles("*.tif");
    et ça marche aussi

    Y aurait t'il une ecriture qui fonctionnerait pour des tif et des jpg (c'est ce que j'utilise le plus souvent)

    Autre question
    comment attribuer au fichier "tirages" (les résultats) un profil rgb adobe 1998 ou autres par exemple ?

    Je suis en train de faire la mise à jour de Java, l'erreur viendrait peut être de ça mais bon

    Merci pour l'aide

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Salut Txuku

    Merci beaucoup

    Le script fonctionne

    Mais je voudrais l'améliorer.

    Essaye le et tu comprendra ce que je cherche à paufiner

    ------
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    //ForPrint.jsx
    *
    startRulerUnits = app.preferences.rulerUnits; // preferences de depart a remettre a la fin
    startTypeUnits = app.preferences.typeUnits
    startDisplayDialogs = app.displayDialogs
    *
    app.preferences.rulerUnits = Units.CM; // PIXELS POINTS PERCENT .... unite desiree dans le script
    app.preferences.typeUnits = TypeUnits.PIXELS
    app.displayDialogs = DialogModes.NO
    *
    //Choisir le dossier
    *
    //Une boite de dialogue pour choisir le dossier
    var inputFolder =  Folder.selectDialog("Selectionner le DOSSIER DES IMAGES A TRAITER"); 
    *
    //Autre solution encore mettre l adresse complete avec le nom d USER a la place du mien " /moi "
    //var inputFolder = new Folder("C:/Documents and Settings/Compaq_Propriétaire/Mes documents/ALAIN/TEST/");
    *
    *
    outputFolder = inputFolder; // le meme dossier pour l exportation
    *
    *
    largeurDesiree = 100 //mettre la largeur desiree pixels en reglant par des essais
    *
    *
    //Ouvrir les images
    *
    a = 1; //Incrementation des images Tirage1 2 3 ......
    *
    OpenFolder()
    *
    function OpenFolder()
    {
             filesOpened = 0;
    *
             fileList = inputFolder.getFiles("*.tif");
     
            for (  i = 0; i < fileList.length; ) 
            {
     
                if ( (fileList.length - i) < 2 )
                 {
                    // Create a new document
               var h = 30.5;
               var l = 45;
                    newDocumentRef  = app.documents.add(l, h, 320.0, "Vide", NewDocumentMode.RGB, DocumentFill.WHITE, 1)
                    for (  j = 0; fileList.length - i > 0 ; j++ ) 
                    { 
                      travailFaire();  
                    }
     
                    sauverDoc();
                 }
                else
                {
                // Create a new document
               var h = 30.5;
               var l = 45;
                newDocumentRef  = app.documents.add(l, h, 320.0, "Vide", NewDocumentMode.RGB, DocumentFill.WHITE, 1)
                for (  j = 0; j < 2 ; j++ )
     
                 { 
                      travailFaire()        
                 } 
                 sauverDoc()
                 a++;       
                }
             }
            return filesOpened;
    }
    *
    *
    *
    function travailFaire()
    {
     
                            open( fileList[i] );
                            filesOpened++;
                             docRef = activeDocument;
     
                                        if (docRef.width > docRef.height) // redresser si besoin
                                         {
                                 docRef.rotateCanvas(-90);
                             }
                              tailleImageLarge = docRef.width,
                              rapportLH = docRef.height/docRef.width;
     
                              tailleImageLarge = largeurDesiree;
     
                              tailleImageHaut =tailleImageLarge*rapportLH;
     
                                          docRef.resizeImage(tailleImageLarge, tailleImageHaut, 320.0, ResampleMethod.BICUBIC )
     
                        docRef.selection.selectAll()
              docRef.selection.copy()
              docRef.flatten();
                        docRef.close(SaveOptions.DONOTSAVECHANGES) // fermer l image sans sauver
     
              var myLayerSets = new Array()
     
                        activeDocument = newDocumentRef  
                var layerSetRef = newDocumentRef .layerSets.add();
       var layerRef = layerSetRef.artLayers.add();
       newDocumentRef .activeLayer = layerRef;
       app.activeDocument.paste(); 
     
              // placement des images 1 et 2 : faire des essais
     
              switch(j)
              {
                case j = 0:
                  default:
                  deplH = -320;
                  deplV = 0
                  break;
     
                  case j = 1:
                  deplH =  320;
                  deplV = 0;
                  break;
     
              }
     
                        layerRef.translate(deplH, deplV)
     
              i++;
     
    }
    *
    *
    *
    *
    function sauverDoc()   //sauver le nouveau document Tirage(n)
    {
               newDocumentRef.flatten();
     
               Nom = "Tirage";
     
               var jpegOptions = new JPEGSaveOptions();
    jpegOptions.quality = 12;
    jpegOptions.embedColorProfile = false;
    app.activeDocument.saveAs( File( outputFolder +"/" + Nom + a + ".jpg" ), jpegOptions, false);
     
     
             newDocumentRef.close();
     
    }
    *
    *
    app.preferences.rulerUnits = startRulerUnits // retour aux preferences de depart
    -------

    Il faudrait qu'on puisse donner une hauteur au images qu'on colle et que la largeur soit proportionnelle, sans déformation. Ainsi on pourrait faire des images à tirer de dimension précises (ce que ne permet pas vraiment planches contacts II de photoshop). Pour l'instant la hauteur des images collée est la moitié de la largeur du tirage (la planche) si je ne me trompe pas. L'idéal serait par exemple que l'utilisateur puisse rentrer dans un dialogue la hauteur désiré. (ca je pense savoir le faire quand même mais encore une fois la syntaxe !)

    Il faudrait que ces deux images par tirage soit centrées sur la verticale et distribués régulièrement sur l'horizontale. Comme ça, peut importe la taille désirée des images dans chaque tirage , pas la peine de rentrer dans le script pour donner les coordonnées de placement des images.
    (kernelfailure a répondu je crois à ces questions, mais je ne sais pas les placer dans ton script)

    Il faudrait assigner un profil aux tirages (pas une grosse affaire mais pour un débutant comme moi c'est la syntaxe qui manque !)

    Un script comme ça serait un bon outil pour tirer à la taille désirée une série d'images sur des feuilles 45*30,5 par exemple ou autre.
    Dans cette version on pourrait n'en mettre que 2 de taille désirée par feuille, mais pourquoi pas imaginer d'en mettre plus, en les distribuant bien, dans un soucis d'économie, avec des avertissements de tailles maximum en fonction du nombre et pourquoi pas de la marge blanche désirée. Mais c'est une autre histoire !

    A bientôt

    spaceodity

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Voilà ce que j'ai pu trouver sur le net. Ici on filtre sur jpg, tif et psd.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var inputFolder = Folder.selectDialog("Select a folder of documents to process");
    var outputFolder = Folder.selectDialog("Select Destination Folder");
    if(inputFolder == null) return;
    if(outputFolder == null) return;
    var fileList = inputFolder.getFiles(/\.(jpg|tif|psd)$/i);
    Question :
    Est-ce que tu fais une distinction particulière entre tes images 1 et 2 ou bien peut-on dire globalement que tu colles toutes les images par paire et puis c'est tout ?

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Txuku
    J'ai mieux compris ton script.

    En mettant largeurDesiree = 85 j'ai ce que je veux
    Mais c'est quoi cette valeur
    Ca ressemble à un pourcentage mais dans la fonction travailFaire je ne vois pas de pourcentage ?

    Lorsque tu fais les calcul pour garder les proportion tu fais rapportLH = docRef.height/docRef.width;
    Je pense que c'est précis, mais est ce aussi précis que lorsqu'on fait à la main un resize d'image en gardant les proportions ? C'est une question purement théorique car je ne vois pas de difference, simplement il y a toujours plein de chiffre aprés les virgules dans les divisions ...

    Sinon, et excuse moi de t'inonder de questions, je dois faire passer à cette moulinette des images carrées (qui ne le sont pas tout à fait).
    Je voudrais que la rotation se fasse à partir d'une certaine difference entre la hauteur et la largeur (pour les 24x36, les 6x7 par exemple mais mas pour un 10,2x10). Il suffit de mettre une conditions de plus en soustrayant la largeur de la longeur, mais je pense que je vais parfois tomber sur des valeurs négative. Il faudrait donc passer en valeur absolu, mais je ne sais pas du tout comment faire ???

    a+

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    merci kernelfailure
    Je vais essayer ce filtre

    Sinon, non, je ne fais pas de difference entre les images.

    J'aimerai simplement que sur l'horizontale elle soit aligner pour faciliter la coupe au massico. Hors je pense que ce ne vas pas être toujours le cas, quand elle ont des proportions differentes aie !

  19. #19
    Membre Expert Avatar de txuku
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 980
    Par défaut
    Un peu fatigue aujourdhui - je ne sais pourquoi .............


    largeurDesiree = 85 : je suis un peu perdu entre pixels cm et dpi ....... tatonnes.


    pour la rotation conditionnelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var filtreRotation = 1.02 // ou plus
     
    if (docRef.width / docRef.height>filtreRotation) 
    {
                                  docRef.rotateCanvas(-90);
                              }

    En ce qui concerne le deplacement - si le collage se fait au centre - il suffit de deplacer une image de - saLargeur/2 - une valeur et l autre de + saLargeur/2 + la meme valeur ?

    R : quand tu postes du code tu devrais utiliser la balise CODE pour eviter les * sur les interlignes.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var filtreRotation = 1.02 // ou plus
    On peut définir cette variable au tout début du script non ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Faire une grille avec SDL
    Par holdboy dans le forum SDL
    Réponses: 13
    Dernier message: 26/12/2008, 19h47
  2. Comment faire une capture d'écran pour envoyer sur le forum ?
    Par jlb59 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 3
    Dernier message: 07/07/2007, 17h28
  3. Faire une grille...
    Par Spack dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 14/05/2006, 21h46
  4. Réponses: 2
    Dernier message: 01/08/2005, 16h55
  5. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44

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