Diese Frage wird recht oft gestellt : Das automatische Freistellen mehrerer Bilder/Objekte. Also, hier das zugehörige Script, welches einfach nur den Farbwert an Pixelstelle 10/10 ausliest und in einer Javascript-Alert-Box anzeigt.
getColor.jsx
#target photoshop var docAktuell = app.activeDocument; var pixelLoc = [UnitValue("10 pixels") , UnitValue("10 pixels")]; var colorSamplerRef = docAktuell.colorSamplers.add(pixelLoc); var currentColor = colorSamplerRef.color; var redVal = Math.round(currentColor.rgb.red); var greenVal = Math.round(currentColor.rgb.green); var blueVal = Math.round(currentColor.rgb.blue); alert("Pixel [10, 10] = (" + redVal + ", " + greenVal + ", " + blueVal + ")");
Scripts werden grundsätzlich in ./Photoshop/Presets/Scripts/ abgelegt und sind dann in Photoshop unter Script erreichbar. Übrigens, es gibt ein tolles Forum dafür : http://www.ps-scripts.com/bb/index.php – Leider ist da nicht soviel los, Scripting ist halt nicht Jedermanns Sache.
Hier also eine Minimalversion eines Photoshopscripts, dass in einer Datei 4 Selections in den Ecken nimmt, per Similar eine Keyingauswahl erstellt und diese in einer Maske speichert.
AutoKeyer.jsx
#target photoshop var docAktuell = app.activeDocument; var maxX = docAktuell.width; var maxY = docAktuell.height; //change backgroundlayer to worklayer if(docAktuell.layers[0].isBackgroundLayer==true){ docAktuell.layers[0].isBackgroundLayer=false; } // makeLayerMask function - done by Paul Riggott // http://forums.adobe.com/thread/290125 function makeLayerMask(maskType) { if( maskType == undefined) maskType = 'RvlS' ; //from selection var desc140 = new ActionDescriptor(); desc140.putClass( charIDToTypeID('Nw '), charIDToTypeID('Chnl') ); var ref51 = new ActionReference(); ref51.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Msk ') ); desc140.putReference( charIDToTypeID('At '), ref51 ); desc140.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('UsrM'), charIDToTypeID(maskType) ); executeAction( charIDToTypeID('Mk '), desc140, DialogModes.NO ); } // change Rulerunits to px var strtRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.PIXELS; // 4 Corner rectangled Selections docAktuell.selection.select(new Array (new Array(10,10),new Array(20,10), new Array(20,20), new Array(10,20)),SelectionType.REPLACE, 1, false); docAktuell.selection.select(new Array (new Array(maxX-10,10),new Array(maxX-20,10), new Array(maxX-20,20), new Array(maxX-10,20)),SelectionType.EXTEND, 1, false); docAktuell.selection.select(new Array (new Array(maxX-10,maxY-10),new Array(maxX-20,maxY-10), new Array(maxX-20,maxY-20), new Array(maxX-10,maxY-20)),SelectionType.EXTEND, 1, false); docAktuell.selection.select(new Array (new Array(10,maxY-10),new Array(20,maxY-10), new Array(20,maxY-20), new Array(10,maxY-20)),SelectionType.EXTEND, 1, false); // Grab all pix similar to the selection docAktuell.selection.similar(60,10); // change the selection a bit var Selected = app.activeDocument.selection; Selected.expand( 0.2 ); //Selected.contract( 5 ); Selected.feather( 0.2 ); //make a mask from it makeLayerMask('HdSl'); //done ! thx by phreekz.chmee
Wieder mal die wichtige Info, dass keine Fehler abgefangen werden. Ich habe das Script mal mit diesem Bild ausprobiert, mit Diesem und auch mit diesem Hier . Sieht erstmal gut aus. Im Script sind die Variablen recht gut einsehbar, zB im Similar Bereich die Werte für Toleranz (60) und Antialiasing (10), danach auch noch Variablen, um die Selektion zu verbessern, Expand und Feather.
Wenn man am Scripting Gefallen findet, sollte man mit diesem Tutorial weitermachen.
mfg chmee