hilfdirselbst.ch
Facebook Twitter gamper-media
Hans Haesler  M  p
Beiträge: 5580
25. Jan 2015, 20:06
Beitrag #1 von 8
Bewertung:
(2847 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Hallo InDesign-Fans,

das Forumsmitglied NEU! postete in der Skriptwerkstatt sein Anliegen: Ein Script, mit welchem ein im aktivierten Bild enthaltener Alpha-Kanal zugewiesen werden kann.

Das ginge zwar auch manuell, wäre aber etwas umständlicher.

Weil NEU! beim Scripten selbst Hand anlegen wollte, bevorzugte er eine AppleScript-Lösung. Deshalb wurde das Thema ins entsprechende Forum verschoben: http://www.hilfdirselbst.ch/..._P536108.html#536108

Es könnte aber auch sein, dass jemand diese Lösung unter Windows einsetzen möchte. Deshalb nachstehend der nach JavaScript portierte Code.

Gebrauchsfertige Dateien des JavaScripts gibt es auch hier: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS2" bis "InDesign CS5". Letztere sollte auch mit CS5.5, CS6, CC und CC (2014) funktionieren.

Code
//AlphaKanalWahl_501d.js 
//© 25.01.15 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Einen Alpha-Kanal zuweisen

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// testen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Ein Dokument öffnen.", "Achtung", true);
exit();
}

// die Auswahl speichern ...
var curSel = app.selection;
var nItems = curSel.length;
// ... und prüfen
if (nItems == 0) {
alert ("Es ist nichts ausgewählt.", "Stop", true);
exit();
}
// testen, ob ein Bildrahmen oder ein Bild ausgewählt ist
// und den Pfad zur Bilddatei speichern
var objType = curSel[0].constructor.name;
if (objType == "Rectangle" || objType == "Polygon" || objType == "Oval") {
try {
var curObj = curSel[0].images[0];
var curLink = curObj.itemLink;
var curPath = curLink.filePath;
}
catch (e) {
alert ("Der Bildrahmen ist leer.", "Stop", true);
exit();
}
}
else if (objType == "Image") {
var curObj = curSel[0];
var curLink = curObj.itemLink;
var curPath = curLink.filePath;
}
else {
alert ("Bitte ein Bild auswählen.", "Achtung", true);
exit();
}
// den Status der Verknüpfung feststellen ...
var curStatus = curLink.status*1;
// ... und prüfen
if (curStatus == 1819109747) {
alert ("Die Bilddatei existiert nicht.", "Stop", true);
exit();
}
else if (curStatus == 1819242340) {
alert ("Zuerst die Verknüpfung aktualisieren.", "Achtung", true);
exit();
}
// die Alpha-Kanäle auflisten
var alphaNames = curObj.clippingPath.alphaChannelPathNames;
// die Anzahl Alpha-Kanäle prüfen
if (alphaNames.length == 0) {
alert ("Das Bild enthält keinen Alpha-Kanal.", "Stop", true);
exit();
}
// eventuell im Speicher vorhandene Dialoge entfernen
try {
app.dialogs.everyItem().destroy();
}
catch (e) {
}
// den Dialog vorbereiten ...
var aDialog = app.dialogs.add({name:"Den Alpha-Kanal wählen:"});
with (aDialog) {
with (dialogColumns.add()) {
var alphaDrop = dropdowns.add({stringList:alphaNames, selectedIndex:0});
}
}
// ... und anzeigen
if (aDialog.show() == true) {
// den gewählten Artikel feststellen
var curAlpha = alphaNames[alphaDrop.selectedIndex];
// den Dialog aus dem Speicher entfernen
aDialog.destroy();
}
else {
aDialog.destroy();
exit();
}
// die Vorgaben einstellen
app.imageIOPreferences.alphaChannelName = curAlpha;
// das Bild erneut importieren
curSel[0].place(File(curPath));

Interessant für Scripter: Währenddem mit dem AppleScript nach dem Importieren ein explizites 'relink' notwendig ist, um den Bildschirm aufzufrischen, genügt mit dem JavaScript das Laden des Bildes.

Übrigens: Das Problem war vor fünf Jahren schon ein Mal diskutiert worden: http://www.hilfdirselbst.ch/..._P430187.html#430187
Schade, dass ich dies erst heute entdeckt habe. Denn das hätte mir etliche Irrungen und Wirrungen erspart ...

Gruss, Hans Top
 
X
Hans Haesler  M  p
Beiträge: 5580
25. Feb 2015, 13:21
Beitrag #2 von 8
Beitrag ID: #537415
Bewertung:
(2594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Hallo InDesign-Fans,

das oben gepostete Script hat ein kleines Problem:
Wenn ein Bildrahmen ausgewählt ist, welcher ein PDF enthält, behauptet der Dialog, dass der Rahmen leer ist.
Mit der Version x02 ist das korrigiert.

Eine zweite Änderung: In der Auswahl der Alpha-Kanäle gibt es zusätzlich den Artikel keinen.
Damit kann das Bild ohne Maske geladen werden.

Nochmals der Link: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS2" bis "InDesign CS5". Letztere sollte auch mit CS5.5, CS6, CC und CC (2014) funktionieren.

@ Scripter ... Das erwähnte Problem probiere ich hier zu erklären: http://www.hilfdirselbst.ch/...i?post=537414#537414

Gruss, Hans
als Antwort auf: [#536269] Top
 
NEU!
Beiträge: 172
21. Dez 2017, 09:31
Beitrag #3 von 8
Beitrag ID: #561554
Bewertung:
(1540 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Guten Morgen Hans,

Ohje, Zeiten ändern sich und wir haben ein neues DAM, Cumulus von Canto. Prizipiell Grund zur Freude. Und ich hab mich so sehr daran gewöhnt, eben flink von Bildern ohne aktivierten Alpha zu Freisteller-Darstellung wechseln zu können.

Heute Morgen stelle ich aber mit Erschrecken fest: Das feine Script läuft nicht mehr, da die Links jetzt nicht mehr auf lokale Dateien zeigen, sondern z.B.


Name 44053-44054-44055-44056-44057_002_Graues Shirt_Sommer.tif
Seite 1
Skalieren 18.6%
Pfad cumulus://192.168.96.116:9287/Products/AssetRecords/6025
Format TIFF
Platzierungsdatum Donnerstag, 21. Dezember 2017 09:02
Geändert Montag, 31. Juli 2017 12:41
Erstellungsdatum Freitag, 9. Mai 2014 11:55


mit einer Serveradresse arbeiten. Die Script-AlphaKanal-Auswahl-Dialog liest die möglichen Alphas noch korrekt aus, doch dann gibts folgenden Fehler:

Fehlerzeichenfolge: "/Volumes/Macintosh HD:192.168.96.116/9287:Products:AssetRecords:6025" kann nicht gefunden werden.
Zeile 90, Quelle: curSel[0].place(File(curPath));


Habs getestet mit InD CC 2017.0 auf OSX 10.12.6

Jetzt meine Frage:
Ist da überhaupt was zu machen, oder müsste man dazu irgendwie mit dem Hersteller zusammenarbeiten, um die Links aufzulösen? Wer bringt InDesign die Technik auf externe Links bei, das PlugIn? Und welches wäre die richtige Frage an den Canto-Support?

Ich hoffe du kannst mir irgendwie weiterhelfen…
Wenn nicht aber schonmal einen schönen Gruß und Fröhliche Weihnachten dann aus Norddeutschland :)
als Antwort auf: [#537415]
(Dieser Beitrag wurde von NEU! am 21. Dez 2017, 09:33 geändert)
Top
 
Hans Haesler  M  p
Beiträge: 5580
21. Dez 2017, 10:36
Beitrag #4 von 8
Beitrag ID: #561555
Bewertung:
(1512 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Hallo NEU!,

wie sieht es mit dem AppleScript aus? Vermutlich dasselbe Problem?

Ich werde mal ein Testscript schreiben und es Dir per PM zustellen.

Gruss, Hans
als Antwort auf: [#561554] Top
 
Thomas Richard  M  p
Beiträge: 17689
21. Dez 2017, 15:15
Beitrag #5 von 8
Beitrag ID: #561559
Bewertung:
(1458 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Antwort auf: Pfad cumulus://192.168.96.116:9287/Products/AssetRecords/6025

...

Fehlerzeichenfolge: "/Volumes/Macintosh HD:192.168.96.116/9287:Products:AssetRecords:6025" kann nicht gefunden werden.


Der Pfad scheint mit dem enthaltenen, per Doppelpunkt abgetrennten Port nicht zurecht zu kommen.
In der Fehlermeldung ist der erste Teil des Pfades gemäß POSIX ausgezeichnet, ab dem Port 9287 gehts aber per AFP Nomenklatur, sprich Doppelpunkt als Verzeichnistrenner weiter!?


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/
als Antwort auf: [#561554]
(Dieser Beitrag wurde von Kai Rübsamen am 21. Dez 2017, 17:11 geändert)
Top
 
Hans Haesler  M  p
Beiträge: 5580
21. Dez 2017, 16:39
Beitrag #6 von 8
Beitrag ID: #561560
Bewertung:
(1442 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Hallo Thomas,

besten Dank für Deine Erklärung.

Mit meinem Testscript klappte es auch nicht. War ja vorauszusehen.
Ohne das PlugIn wird es kaum möglich sein, eine Lösung zu finden.

Sehr wahrscheinlich wird sich NEU! an den Support von Canto wenden müssen,
in der Hoffnung, dass denen das Problem bereits bekannt ist.

Gruss, Hans
als Antwort auf: [#561559] Top
 
Uwe Laubender S
Beiträge: 4042
21. Dez 2017, 17:04
Beitrag #7 von 8
Beitrag ID: #561561
Bewertung:
(1434 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Hallo Hans,

klappt (wenigstens) so etwas?

Benutzer wählt Grafikrahmen mit Bild aus.
Dann folgendes Schnipsel starten:

Code
var file = app.selection[0].graphics[0].itemLink.filePath; 
alert( file.exists );


Ich würde jetzt mal true als Antwort im alert erwarten.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#561560] Top
 
Hans Haesler  M  p
Beiträge: 5580
21. Dez 2017, 17:21
Beitrag #8 von 8
Beitrag ID: #561562
Bewertung:
(1413 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Alpha-Kanal auf ausgewähltes Bild anwenden


Hallo Uwe,

danke für Dein Mitraten.

Das Holen des Pfades (mit dem Original-Script) scheint zu klappen.
Laut NEU! werden die Alpha-Kanäle erkannt.

Die Fehlermeldung kommt beim Versuch, das Bild erneut zu importieren.

Gruss, Hans
als Antwort auf: [#561561] Top
 
X