Sujet: Recadrage par lot

Modérateur: Modérateurs

Poster une réponse

Re: Recadrage par lot

par Dormeur74 » Lundi 04 Mai 2015 9:26

Non pas la peine, je peux me fabriquer un mammouth de ce type. Ce que tu peux faire, c'est me mettre une image en basse résolution ici (72 ppp suffiront), dans une taille compatible avec le forum (600x400 pixels suffiront) pour que je vois une photo-type.
Tu me donnes enfin la résolution utilisée pour scanner tes négas et diapos, ainsi que les dimensions en pixels d'une photo-type.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Recadrage par lot

par Winchers » Lundi 04 Mai 2015 17:14

Ok je vais mettre les photos sur le forum

Photos: 3
Winchers

Pi........
Pi........

Messages: 24

Inscription: 04 Mar 2012

Boitier 1: - Canon EOS 450D

Objectif 1: - Canon 18-55mm f/3.5-5.6 EF-S IS II (Bulk)

Flash 1: - Yong Nuo YN565 EX

Flash 2: - Yong Nuo YN460-II

par Winchers » Mardi 05 Mai 2015 16:10

Voici 3exemples de photos ci-joint dis-moi si c'est ok pour toi.

Photos: 3
Winchers

Pi........
Pi........

Messages: 24

Inscription: 04 Mar 2012

Boitier 1: - Canon EOS 450D

Objectif 1: - Canon 18-55mm f/3.5-5.6 EF-S IS II (Bulk)

Flash 1: - Yong Nuo YN565 EX

Flash 2: - Yong Nuo YN460-II

Fichiers joints
Test recadrage.jpg
Test recadrage.jpg (294.46 Kio) Vu 1052 fois
Test recadrage-2.jpg
Test recadrage-2.jpg (315.66 Kio) Vu 1052 fois
Test recadrage-3.jpg
Test recadrage-3.jpg (295.48 Kio) Vu 1052 fois

par Dormeur74 » Mardi 05 Mai 2015 18:18

Il me manque l'essentiel :-D : dimensions en pixels, taille du document et Résolution.

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

par Dormeur74 » Mercredi 06 Mai 2015 9:03

En fait je n'ai pas besoin de connaître autre chose pour t'expliquer dans le détail comment je procède. Tu adapteras en fonction de tes diapos réelles.
Celles qui sont ici font 600 x 397 px. Lorsqu'on les recadre avec minutie, on obtient respectivement 563x364 px, 567x370 px et 371x574 px. Le calcul des ratios montre que la perte la plus importante est la hauteur de la moto : 364/397 px = 0,916. C'est ce coefficient de réduction qu'on va utiliser. Mes 3 photos après traitement feront 600x0.916 = 549 px (la plus grande dimension) et 397x0.916 = 363 px (la plus petite dimension).

A partir de là, tu vas te fabriquer 2 caches (un horizontal et un vertical) que tu nommeras cacheH.psd et cacheV.psd. Ils auront les dimensions suivantes :

Image
Image

Tu noteras deux choses :
1) ces deux cadres ajourées ont pour dimensions intérieures 549x363 px et pour dimensions extérieures les dimentions des diapos + 100 pixels en x et y.
2) les calques de ces deux cadres sont déverrouillés.
Tu mettras ces deux fichiers dans le dossier des diapos à traiter.

Ensuite tu vas copier les deux scripts ci-dessous dans ton bloc-notes et les sauvegarder dans le dossier des diapos à traiter avec l'extension de fichier .JSX.

Le premier s'appellera Pré-traitement.jsx
Code: Tout sélectionner
// MAC Finder ou WINDOWS Explorer, on autorise le double clic  et on fait passer Photoshop au 1er plan
#target photoshop
app.bringToFront();

var prefixeTemp="@";
var extension=".psd";

// On sélectionne le dossier contenant les images à traiter
    // On met toutes les images à traiter dans un tableau
    var inputFolder = Folder.selectDialog("Sélectionnez le dossier contenant les images à traiter : ");
    var outputFolder = new Folder(inputFolder+"/temp");
    if(!outputFolder.exists) outputFolder.create(); // S'il n'existe pas, on crée un sous-dossier pour les images pré-traitées
    var fileList = inputFolder.getFiles("*.jpg");
    // et on traite une à une toutes les images
    for (var i= 0;i<fileList.length;i++) {
    //for (var i= 0;i<1;i++) {
        var docRef = open(fileList[i]);
        var docName  = docRef.name;
        var docName  = docName.substring( 0, docName.indexOf('.') ); 
        var docPath = docRef.path;
        var largeur = app.activeDocument.width;
        var hauteur = app.activeDocument.height;
        var resolution = app.activeDocument.resolution;
       
        // Si l'image est verticale, on charge le cadre vertical, sinon l'horizontal
        if(hauteur>largeur){
            // Photo verticale
            var cadreV = File(docPath + "/cadreV.psd")
            open(cadreV);
            }
        else{
            // Photo horizontale
            var cadreH = File(docPath + "/cadreH.psd")
            open(cadreH);
            }
        // On copie le calque de la photo dans le cadre
        var result = copierColler();
       
        // On sauvegarde l'image au format PSD pour pouvoir revenir dessus
        var psd_Options  = new PhotoshopSaveOptions(); // [PhotoshopSaveOptions]
        psd_Options.layers  = true; // préserve les calques
        psd_Options.embedColorProfile = true; // préserve le profil colorimétrique
        psd_Options.annotations = true; // préserve les annotations
        psd_Options.alphaChannels = true; // préserve les canaux alpha
        psd_Options.spotColors = true; // préserve les encres
       
        // Sauvegarde au format PSD
        docRef.saveAs( File(outputFolder + '/' + prefixeTemp + docName + extension ), psd_Options, true );
        app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
        var result = fermeture();

      }

//++++++++++++++++ COPIER-COLLER  ++++++++++++++++
function copierColler(){
    var photo = app.documents[0]; // La photo
    var cadre = app.documents[1]; // Le cadre
    app.activeDocument = app.documents[0];// On donne le focus à la photo
    app.activeDocument.selection.selectAll(); // On sélectionne la photo
    app.activeDocument.selection.copy(); // On la copie dans le presse-papiers
    app.activeDocument = app.documents[1];// On donne le focus au cadre
    app.activeDocument.paste(); // On copie la photo sur le cadre
    app.activeDocument.activeLayer.move(app.activeDocument, ElementPlacement.PLACEATEND )// On fait passer la photo en arrière plan
    }

function fermeture(){
    app.activeDocument = app.documents[0];// On donne le focus à la photo
    app.activeDocument.close();
    }


Le second s'appellera Recadrage.jsx
Code: Tout sélectionner
// MAC Finder ou WINDOWS Explorer, on autorise le double clic  et on fait passer Photoshop au 1er plan
#target photoshop
app.bringToFront();

// On sélectionne le dossier contenant les images à traiter
// On met toutes les images prétraitées dans un tableau
var inputFolder = Folder.selectDialog("Sélectionnez le dossier contenant les images à traiter. Il s'agit du dossier initial, à ne pas confondre avec celui des images pré-traitées : ");
inputFolder = Folder(inputFolder +="/temp");
var fileList = inputFolder.getFiles("*.psd");
// et on traite une à une toutes les images
for (var i= 0;i<fileList.length;i++) {
    var docRef = open(fileList[i]);
    var docName  = docRef.name;
    var docName  = docName.substring( 0, docName.indexOf('.') ); 
    var docPath = docRef.path;
    var largeur = app.activeDocument.width;
    var hauteur = app.activeDocument.height;
    var resolution = app.activeDocument.resolution;
 
    var result = recadrage();
       
    // On sauvegarde l'image au format PSD pour pouvoir revenir dessus
    var psd_Options  = new PhotoshopSaveOptions(); // [PhotoshopSaveOptions]
    psd_Options.layers  = true; // préserve les calques
    psd_Options.embedColorProfile = true; // préserve le profil colorimétrique
    psd_Options.annotations = true; // préserve les annotations
    psd_Options.alphaChannels = true; // préserve les canaux alpha
    psd_Options.spotColors = true; // préserve les encres

    // Sauvegarde
    docRef.saveAs( File(docPath + '/' + docName + ".psd" ), psd_Options, true );
    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
    }

function recadrage(){
    app.activeDocument.flatten(); // On aplatit les calques
    // =======================================================
    var idSbtF = charIDToTypeID( "SbtF" );
    var desc8 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    var ref2 = new ActionReference();
    var idChnl = charIDToTypeID( "Chnl" );
    var idfsel = charIDToTypeID( "fsel" );
    ref2.putProperty( idChnl, idfsel );
    desc8.putReference( idnull, ref2 );
    var idT = charIDToTypeID( "T   " );
    var desc9 = new ActionDescriptor();
    var idHrzn = charIDToTypeID( "Hrzn" );
    var idRlt = charIDToTypeID( "#Rlt" );
    desc9.putUnitDouble( idHrzn, idRlt, 0.000000 );
    var idVrtc = charIDToTypeID( "Vrtc" );
    var idRlt = charIDToTypeID( "#Rlt" );
    desc9.putUnitDouble( idVrtc, idRlt, 0.000000 );
    var idPnt = charIDToTypeID( "Pnt " );
    desc8.putObject( idT, idPnt, desc9 );
    var idTlrn = charIDToTypeID( "Tlrn" );
    desc8.putInteger( idTlrn, 0 );
    var idCntg = charIDToTypeID( "Cntg" );
    desc8.putBoolean( idCntg, false );
    executeAction( idSbtF, desc8, DialogModes.NO );

    // =======================================================
    var idInvs = charIDToTypeID( "Invs" );
    executeAction( idInvs, undefined, DialogModes.NO );

    // =======================================================
    var idCrop = charIDToTypeID( "Crop" );
    var desc10 = new ActionDescriptor();
    executeAction( idCrop, desc10, DialogModes.NO );
    }


Ensuite, le traitement se passe en 3 temps :
1) Tu ouvres Photoshop et tu cliques sur Fichier...Scripts. A l'aide du navigateur tu pointes sur le dossier contenant les diapos et tu exécutes Pré-traitement.jsx. Le navigateur du script va te demander de pointer à nouveau sur ce dossier, parce qu'on peut mettre ces scripts n'importe où sur son disque dur. Chez moi, tous les miens sont dans c:\PS_Scripts, certains préfèrent le sous-dossier de Photoshop prévu à cet effet.
Comme tes documents sont très lourds, il faudra patienter.
2) Tu trouveras les photos pré-traitées dans le sous-dossier ../temp créé par le 1er script. Comme il est impossible de faire autrement, le positionnement précis des photos dans leur cadre devra se faire à la main. Tu sauvegarderas sans les aplatir celles que tu auras dû repositionner, c'est le 2e script qui s'en chargera.
3) Tu refais la même chose, mais cette fois tu lanceras le 2e script (Fichier...Scripts...navigation...Recadrage.jsx).
Le 2e script va aplatir les photos, sélectionner les cadres bleus, inverser la sélection, recadrer la photo et la sauvegarder dans le dossier ../temp. En fin de traitement toutes tes photos doivent avoir la même dimension. Tu testes et tu me dis. Chez moi, ça marche avec mes diapos sauvegardées au format .pcd sur CD Photo Kodak. L'avantage des scripts faisant appel au composant JavascriptUI fourni avec Photoshop, c'est qu'on peut se passer du traitement par lot et des actions (.atn).

Photos: 147
Dormeur74

Membre VIP
Membre VIP

Messages: 1063

Inscription: 21 Oct 2008

Localisation: Haute-Savoie

Re: Recadrage par lot

par Winchers » Mercredi 06 Mai 2015 9:10

Ok merci pour ce développement je vais essayer tes scripts et je te dirai quoi. A bientôt

Photos: 3
Winchers

Pi........
Pi........

Messages: 24

Inscription: 04 Mar 2012

Boitier 1: - Canon EOS 450D

Objectif 1: - Canon 18-55mm f/3.5-5.6 EF-S IS II (Bulk)

Flash 1: - Yong Nuo YN565 EX

Flash 2: - Yong Nuo YN460-II

Poster une réponse
Précédente

Poster une réponse

Citer la selection
 

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité