PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Bildbearbeitung (2D), Vektor- & Layoutbearbeitung
Photoshop
mehrere markierte Ebenen per javascript in Array schreiben
Beitrag
<blockquote data-quote="pixxxelschubser" data-source="post: 2209075" data-attributes="member: 167287"><p><strong>AW: mehrere markierte Ebenen per javascript in Array schreiben</strong></p><p></p><p>@Aquarii,</p><p>dein Link verwiest auf ein „Layer-Export-Script“. Das geht fast in die gewünschte Richtung, allerdings hast du mit den dort verwendeten Methoden keinerlei Möglichkeit, die <span style="color: Red"><strong>aktuell markierten </strong></span>Ebenen auszulesen.</p><p></p><p>Das funktioniert am ehesten mit einer von<strong> <em>Paul Rigott</em></strong> im <em><strong>User-to-User-Forum</strong></em> geposteten Funktion. Diese übergibt ein Array der markierten Ebenen (oder aber eine Meldung, wenn keine Ebene ausgewählt ist).</p><p></p><p>(das ist JavaScript, nur der Auszeichnung halber als PHP deklariert)</p><p></p><p>[PHP]// This will give you a list of selected layers, the array will be zero if no layers are selected.</p><p></p><p>var selectedLayer = getSelectedLayersIdx();</p><p>if(!selectedLayer.length) alert("no layers selected");</p><p></p><p>function getSelectedLayersIdx(){</p><p> var selectedLayers = new Array;</p><p> var ref = new ActionReference();</p><p> ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );</p><p> var desc = executeActionGet(ref);</p><p> if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){</p><p> desc = desc.getList( stringIDToTypeID( 'targetLayers' ));</p><p> var c = desc.count;</p><p> var selectedLayers = new Array();</p><p> for(var i=0;i<c;i++){</p><p> try{</p><p> activeDocument.backgroundLayer;</p><p> selectedLayers.push( desc.getReference( i ).getIndex() );</p><p> }catch(e){</p><p> selectedLayers.push( desc.getReference( i ).getIndex()+1 );</p><p> }</p><p> }</p><p> }else{</p><p> var ref = new ActionReference();</p><p> ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "ItmI" ));</p><p> ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );</p><p> try{</p><p> activeDocument.backgroundLayer;</p><p> selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))-1);</p><p> }catch(e){</p><p> selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" )));</p><p> }</p><p> var vis = app.activeDocument.activeLayer.visible;</p><p> if(vis == true) app.activeDocument.activeLayer.visible = false;</p><p> var desc9 = new ActionDescriptor();</p><p> var list9 = new ActionList();</p><p> var ref9 = new ActionReference();</p><p> ref9.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );</p><p> list9.putReference( ref9 );</p><p> desc9.putList( charIDToTypeID('null'), list9 );</p><p> executeAction( charIDToTypeID('Shw '), desc9, DialogModes.NO );</p><p> if(app.activeDocument.activeLayer.visible == false) selectedLayers.shift();</p><p> app.activeDocument.activeLayer.visible = vis;</p><p> }</p><p> return selectedLayers;</p><p> };[/PHP]</p><p>Viel Spass damit.</p><p><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite1" alt=":)" title="Smile :)" loading="lazy" data-shortname=":)" /></p></blockquote><p></p>
[QUOTE="pixxxelschubser, post: 2209075, member: 167287"] [b]AW: mehrere markierte Ebenen per javascript in Array schreiben[/b] @Aquarii, dein Link verwiest auf ein „Layer-Export-Script“. Das geht fast in die gewünschte Richtung, allerdings hast du mit den dort verwendeten Methoden keinerlei Möglichkeit, die [COLOR=Red][B]aktuell markierten [/B][/COLOR]Ebenen auszulesen. Das funktioniert am ehesten mit einer von[B] [I]Paul Rigott[/I][/B] im [I][B]User-to-User-Forum[/B][/I] geposteten Funktion. Diese übergibt ein Array der markierten Ebenen (oder aber eine Meldung, wenn keine Ebene ausgewählt ist). (das ist JavaScript, nur der Auszeichnung halber als PHP deklariert) [PHP]// This will give you a list of selected layers, the array will be zero if no layers are selected. var selectedLayer = getSelectedLayersIdx(); if(!selectedLayer.length) alert("no layers selected"); function getSelectedLayersIdx(){ var selectedLayers = new Array; var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var desc = executeActionGet(ref); if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){ desc = desc.getList( stringIDToTypeID( 'targetLayers' )); var c = desc.count; var selectedLayers = new Array(); for(var i=0;i<c;i++){ try{ activeDocument.backgroundLayer; selectedLayers.push( desc.getReference( i ).getIndex() ); }catch(e){ selectedLayers.push( desc.getReference( i ).getIndex()+1 ); } } }else{ var ref = new ActionReference(); ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "ItmI" )); ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); try{ activeDocument.backgroundLayer; selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))-1); }catch(e){ selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))); } var vis = app.activeDocument.activeLayer.visible; if(vis == true) app.activeDocument.activeLayer.visible = false; var desc9 = new ActionDescriptor(); var list9 = new ActionList(); var ref9 = new ActionReference(); ref9.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') ); list9.putReference( ref9 ); desc9.putList( charIDToTypeID('null'), list9 ); executeAction( charIDToTypeID('Shw '), desc9, DialogModes.NO ); if(app.activeDocument.activeLayer.visible == false) selectedLayers.shift(); app.activeDocument.activeLayer.visible = vis; } return selectedLayers; };[/PHP] Viel Spass damit. :) [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Der grüne Frosch hüpft über die Hügel an den Bäumen vorbei in die Höhle. Bitte nenne das zweite Wort!
Antworten
Start
Forum
Bildbearbeitung (2D), Vektor- & Layoutbearbeitung
Photoshop
mehrere markierte Ebenen per javascript in Array schreiben
Oben