Forenindex » Programmierung/Entwicklung » JavaScript » Photoshop CC - Kanäle auf Verwendung prüfen

Photoshop CC - Kanäle auf Verwendung prüfen

Andreas78m
Beiträge gesamt: 29

17. Aug 2018, 09:34
Bewertung:

gelesen: 6204

Beitrag als Lesezeichen
Hallo erst mal,

gibt es eine Möglichkeit ein CMYK Bild zu prüfen, ob ein Pixel in C / M oder Y enthalten ist?

Möchte in diesem Fall den Schatten der sich auf eine eigene Ebene befindet prüfen, ob er (so wie es soll) nur im K (also Schwarz) enthalten ist oder mehrfarbig aufgebaut ist.

Mir fällt leider kaum eine Möglichkeit ein das über JavaScript (oder AppleScript) automatisch zu prüfen und würde mich über Ideen sehr freun.

Beste Grüße,
Andreas

Photoshop CC - Kanäle auf Verwendung prüfen

TMA
Beiträge gesamt: 372

21. Aug 2018, 06:03
Bewertung:

gelesen: 5756

Beitrag als Lesezeichen
Als Idee:
Die Ebene selektieren und die Kanäle dann per Histogram prüfen.

Gruß,
TMA

Photoshop CC - Kanäle auf Verwendung prüfen

Uwe Laubender
Beiträge gesamt: 5005

21. Aug 2018, 10:15
Bewertung:

gelesen: 5717

Beitrag als Lesezeichen
Hallo Andreas,
falls Du die Ebene mit dem Schatten einwandfrei nach Namen identifizieren kannst, müsste es im Kern wie unten funktionieren. Das Histogramm für die einzelnen CMYK-Kanäle wird überprüft, ob es Werte abweichen von 0 aufweist; ausgenommen der letzte Eintrag, der für das "Weiß" zuständig ist. Die Idee hat TMA ja bereits angedeutet…

Das Skript ist nur eine Skizze:
Annahme ist, dass die Ebene mit Namen "Schatten" in keiner Ebenengruppe liegt. Alle Ebenen außer "Schatten" werden vor der Überprüfung auf "unsichtbar" gestellt und nach Ablauf des Skripts nicht zurückgestellt.
Code
/** 
* @@@[email protected]@@ EbeneSchattenNurSchwarz-TEST-PhotoShop.jsx !Version! Tue Aug 21 2018 12:09:02 GMT+0200
*/

/*
CMYK-Bilder
Testet Ebene mit Namen "Schwarz": Sind nur schwarze Pixel vorhanden?

Skript von Uwe Laubender
Getestet mit PhotoShop CS6 auf Windows 10.

*/

( function()
{

var layerName = "Schatten"; // Hier den Namen der Ebene eingeben, die getestet werden soll!

var e;
if( app.documents.length == 0 ){ return };
var doc = app.activeDocument;


try
{
var shadowLayer = doc.layers.getByName( layerName );
}catch(e){ alert("Ebene "+layerName+" wurde nicht gefunden!" ); return };

shadowLayer.visible = true ;

for(var n=0 ; n<doc.layers.length; n++ )
{
if( doc.layers[n] == shadowLayer ){ continue };
doc.layers[n].visible = false ;
};


var histogramCyan = doc.channels.getByName("Cyan").histogram;
var cyanEmpty = true ;

var histogramMagenta = doc.channels.getByName("Magenta").histogram;
var magentaEmpty = true ;

var histogramYellow = doc.channels.getByName("Gelb").histogram;
var yellowEmpty = true ;

var histogramBlack =doc.channels.getByName("Schwarz").histogram;
var blackEmpty = true ;

var blackOnly = true ;

for( var n=0; n<histogramCyan.length-1; n++ )
{
if( histogramCyan[n] != 0 ){ cyanEmpty = false ; break };
};

for( var n=0; n<histogramCyan.length-1; n++ )
{
if( histogramMagenta[n] != 0 ){ magentaEmpty = false ; break };
};

for( var n=0; n<histogramCyan.length-1; n++ )
{
if( histogramYellow[n] != 0 ){ yellowEmpty = false ; break };
};

for( var n=0; n<histogramCyan.length-1; n++ )
{
if( histogramBlack[n] != 0 ){ blackEmpty = false ; break };
};

if( cyanEmpty && magentaEmpty && yellowEmpty && !blackEmpty )
{
alert( "Ebene "+layerName+" enthält ausschließlich schwarze Pixel." );
};

else
{
alert
(
"Resultat: " +"\r"+
"Cyan ist leer: "+cyanEmpty +"\r"+
"Magenta ist leer: "+magentaEmpty +"\r"+
"Gelb ist leer: "+yellowEmpty +"\r"+
"Schwarz ist leer: "+blackEmpty
)

};

}() )

*****
Mit herzlichem Gruß,
Uwe Laubender

Photoshop CC - Kanäle auf Verwendung prüfen

Andreas78m
Beiträge gesamt: 29

21. Aug 2018, 15:27
Bewertung:

gelesen: 5647

Beitrag als Lesezeichen
Vielen, vielen Dank für das Script... das ist echt super!

Funktioniert einwandfrei und ich hab einfach nur statt auf schwarz zu Prüfen, auf die 3 Farben umgestellt und es macht genau das, was es soll.

Beste Grüße,
Andreas