2017-08-02 2 views
-1

Je suis TOUT nouveau à Photoshop-scripting, et je n'arrive pas à trouver beaucoup de documentation à ce sujet. Je connais quelques scripts Applescript, mais comme je l'ai lu Photoshop-scripting est la plupart du temps comme script JAVA?Script Photoshop pour déterminer la couleur ou la photo en noir et blanc

Anyhoo, j'ai besoin d'un script qui va déterminer si le document actif dans Photoshop est une photo couleur ou une photo en noir et blanc. Je sais comment je pense que ça va marcher, mais je ne sais pas comment l'écrire. J'en ai besoin pour une action d'impression que j'ai faite pour imprimer des fichiers JPG. C'est donc toujours fini les fichiers JPG sur lesquels ce script va s'exécuter.

Voici ce que je pense sur la théorie pour le faire fonctionner:

  1. dupliquez le calque d'arrière-plan. (peut être fait avec une action)
  2. Ajouter un filtre - Flou - Moyenne au nouveau calque (peut être fait avec une action)
  3. Si, sur le nouveau calque, le canal rouge est égal au canal bleu et si le canal bleu est égal au vert n'importe où sur le nouveau calque qui aura la même couleur et la même luminosité partout, faites des 'actions en noir et blanc' sinon faites des 'actions de couleur'. (J'ai besoin d'un script pour cela)

Comme vous l'avez déjà compris, la pensée est de créer une couche qui soit mesurable n'importe où pour déterminer s'il y a ou non de la couleur dans l'image. C'est la meilleure façon de penser, de faire un script qui fonctionnera sur toutes les images (pas les images multicouches).

Quelqu'un peut-il m'aider avec ce morceau de code?

Répondre

0

Je l'ai compris.

#target photoshop 

var savePathSH = "Macintosh HD:PATH1:" 
var savePathFarve = "Macintosh HD:Users:PATH2:" 
var doc = app.activeDocument 
var fname = doc.name.split(".jpg") 
var fname = fname[0] 
var halfHeight = (app.activeDocument.height)/2; 
var halfWidth = (app.activeDocument.width)/2; 
var newLayer = doc.activeLayer.duplicate(); 

function saveJPG(name, savepath){ 
var doc = app.activeDocument; 
    var file = new File(savepath + name + ".jpg"); 
var opts = new JPEGSaveOptions(); 
opts.quality = 12; 

doc.saveAs(file, opts, true); 
} 

newLayer; 

doc.activeLayer = doc.layers[0]; 

doc.activeLayer.applyAverage(); 

app.activeDocument.colorSamplers.removeAll(); 

var theSampler = app.activeDocument.colorSamplers.add([halfWidth,halfHeight]); 

var currentColor = theSampler.color; 

var redValue = theSampler.color.rgb.red; 
var greenValue = theSampler.color.rgb.green; 
var blueValue = theSampler.color.rgb.blue; 

app.activeDocument.colorSamplers.removeAll(); 

doc.activeLayer.remove(); 

if (redValue == greenValue && greenValue == blueValue) { 

    var BW = true 
    } else { 
    var BW = false 
    } 

    if (BW == true) { 
saveJPG(fname, savePathSH); 
} else { 
saveJPG(fname, savePathFarve); 
}