#21
|
|||
|
|||
Zitat:
Code:
var number = prompt("Insert numbers: ","10,5,5"); number = number.replace(/,/g, '.'); alert(number); Zitat:
Ob das sinnvoll ist oder nicht, kann ich allerdings nicht sagen. |
#22
|
|||
|
|||
[QUOTE=ph_o_e_n_ix;381931]Ohne das Script zu kennen kann man natürlich auch nur mit etwas exemplarischem aufwarten...
Ich würde hier in das Eingabefeld gerne noch Kommazahlen eingeben können und in den oberen weißen Rand, einen Text per Eingabe platzieren, der allerdings unterschiedlich lang sein kann und der Rand ja auch unterschiedlich breit, je nach Bildgröße. Wenn dann der eingegebene Text noch der Bildname sein könnte, wäre es für den Moment perfekt. Ich bin Dir für jede kleine Hilfe / Tipp dankbar. Stück für Stück verstehe ich immer mehr aber es wird mit Sicherheit noch eine Zeit brauchen, bis ich da wirklich durchsteige ;-) #target photoshop var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.CM; var dlg; var labelGroup; var inputGroup; var widthInput; var heightInput; var randInput; var buttonGroup; var okButton; var cancelButton; dlg = new Window("dialog", "Form"); dlg.orientation = "row"; labelGroup = dlg.add("group"); labelGroup.orientation = "column"; labelGroup.add("statictext", undefined, "Breite cm:"); labelGroup.add("statictext", undefined, "Höhe cm:"); labelGroup.add("statictext", undefined, "Rand cm:"); inputGroup = dlg.add("group"); inputGroup.orientation = "column"; widthInput = inputGroup.add("edittext", undefined, ""); widthInput.characters = 10; widthInput.active = true; heightInput = inputGroup.add("edittext", undefined, ""); heightInput.characters = 10; randInput = inputGroup.add("edittext", undefined, ""); randInput.characters = 10; buttonGroup = dlg.add("group"); buttonGroup.orientation = "column"; okButton = buttonGroup.add("button", undefined, "OK"); cancelButton = buttonGroup.add("button", undefined, "Abbruch"); okButton.onClick = function() { var doc; var docWidth; var docHeight; var imageWidth; var imageHeight; var rand; var black = new SolidColor(); black.rgb.hexValue = "000000"; app.backgroundColor = black; var white = new SolidColor(); white.rgb.hexValue = "FFFFFF"; doc = app.activeDocument; imageWidth = new UnitValue(widthInput.text, "cm"); imageHeight = new UnitValue(heightInput.text, "cm"); rand = new UnitValue(randInput.text, "cm"); doc.resizeImage (imageWidth-(rand*2), imageHeight-(rand*2)); doc.resizeCanvas(doc.width + 5 + rand*2, doc.height + 5 + rand*2, AnchorPosition.MIDDLECENTER) app.backgroundColor = white; doc.resizeCanvas(doc.width, doc.height + 1, AnchorPosition.BOTTOMCENTER) dlg.hide(); }; dlg.show(); var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.MM; Geändert von beetle04021969 (26.05.19 um 03:39 Uhr). |
#23
|
|||
|
|||
Was du da mit deinem Rand veranstaltest, leutet mir zwar nicht ganz ein (jedenfalls dann nicht, wenn man die ursprünglichen Vorgaben zu Grunde legt), aber da wirst du schon wissen, was du tust...
Hier mal nur auf die Schnelle eine halbgare Lösung... Code:
#target photoshop var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.CM; var dlg; var labelGroup; var inputGroup; var widthInput; var heightInput; var randInput; var buttonGroup; var okButton; var cancelButton; dlg = new Window("dialog", "Form"); dlg.orientation = "row"; labelGroup = dlg.add("group"); labelGroup.orientation = "column"; labelGroup.add("statictext", undefined, "Breite cm:"); labelGroup.add("statictext", undefined, "Höhe cm:"); labelGroup.add("statictext", undefined, "Rand cm:"); inputGroup = dlg.add("group"); inputGroup.orientation = "column"; widthInput = inputGroup.add("edittext", undefined, ""); widthInput.characters = 10; widthInput.active = true; heightInput = inputGroup.add("edittext", undefined, ""); heightInput.characters = 10; randInput = inputGroup.add("edittext", undefined, ""); randInput.characters = 10; buttonGroup = dlg.add("group"); buttonGroup.orientation = "column"; okButton = buttonGroup.add("button", undefined, "OK"); cancelButton = buttonGroup.add("button", undefined, "Abbruch"); okButton.onClick = function() { var doc; var docWidth; var docHeight; var imageWidth; var imageHeight; var rand; var black = new SolidColor(); black.rgb.hexValue = "000000"; app.backgroundColor = black; var white = new SolidColor(); white.rgb.hexValue = "FFFFFF"; doc = app.activeDocument; imageWidth = widthInput.text.replace(/,/g, '.'); imageWidth = new UnitValue(imageWidth, "cm"); imageHeight = heightInput.text.replace(/,/g, '.'); imageHeight = new UnitValue(imageHeight, "cm"); rand = randInput.text.replace(/,/g, '.'); rand = new UnitValue(rand, "cm"); doc.resizeImage(imageWidth - (rand * 2), imageHeight - (rand * 2)); doc.resizeCanvas(doc.width + 5 + rand * 2, doc.height + 5 + rand * 2, AnchorPosition.MIDDLECENTER) app.backgroundColor = white; doc.resizeCanvas(doc.width, doc.height + 1, AnchorPosition.BOTTOMCENTER) var artLayer = doc.artLayers.add(); artLayer.kind = LayerKind.TEXT; var textItem = artLayer.textItem; textItem.contents = activeDocument.name; textItem.size = 13; textItem.font = "ArialMT"; textItem.justification = Justification.CENTER; var textPosition = [doc.width / 2, .65]; textItem.position = textPosition; dlg.hide(); }; dlg.show(); var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.MM; |
#24
|
||||
|
||||
#25
|
|||
|
|||
Zitat:
Wie würde den eine gare Lösung aussehen, wenn die halbbare schon so super klasse funktioniert? Es macht genau das, was es soll und ich bin begeistert und kann wieder etwas daraus lernen. Jetzt muss ich mal analysieren, wie Du das gemacht hast und was die einzelnen Parameter bewirken und genau tun. Das mit der Codeeingabe merke ich mir für das nächste mal. Einen schönen Sonntag noch und nochmals DANKE. |
#26
|
|||
|
|||
Naja, die Y-Position des Textes ist ja nicht, wie ursprünglich angedacht, mittels Auswahl und horizontalem Ausrichten umgesetzt worden (was auch nicht optimal ist), sondern durch eine eher statische Angabe. Bei Verwendung eines anderen Fonts (hier müssen im übrigen die Postscriptnamen verwendet werden), stimmt die Position u.U. natürlich nicht mehr. Ähnliches gilt für die Schriftgröße. Sollte diese optisch bei jeder verwendeten Schrift ähnlich groß sein (z.B. 75% der Höhe des weissen Feldes entsprechen), müsste dieses natürlich berechnet werden.
Verbessern könnte man noch genug. Eine Abfrage ob überhaupt ein Dokument geöffnet ist, wäre sinnvoll oder ein Hinweis bei mehrfach verwendeten Kommawerten oder generell bei Verwendung von Buchstaben (es sei den, du erweiterst den Funktionsumfang um Eingabewerte, wie mm, pixel, inch, etc.). Zudem funktioniert dein Abbruch-Button derzeit nicht (änderst du die Bezeichung wieder in "Cancel" hingegen schon) - somit lässt sich dein Dialogfenster nur duch die ESC-Taste beenden Am Ende deines Scriptes setzt du die Lineal-Einheit auf MM und nicht auf den orignalen Wert zurück...daher: Code:
var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.MM; Code:
preferences.rulerUnits = originalRulerUnits; |
#27
|
|||
|
|||
Ich bin schon wieder ein paar Schritte weiter aber jetzt beiße ich mir an dem Thema ein Logo einfügen und auf 1cm in der Höhe verkleinern aus. Kannst Du mir vielleicht nochmal helfen?
Das Logo bekomme ich schon in mein Dokument aber wie bekomme ich es jetzt auf 1cm in der Höhe skaliert und behalte die Proportionen bei, zumal es für ein Dokument das immer die gleiche Größe hat, ja noch gehen würde aber 1cm ist ja je nach Auflösung (dpi) unterschiedlich? Noch ein klitzekleine Frage und zwar, was muss ich ändern wenn ich nicht möchte das mein Bild beim resize die Auflösung (dpi) beibehält, sondern diese sich bei einer Vergrößerung verringert aber maximal auf 120dpi. Anders gesagt bis zu einer Auflösung von 120 dpi soll das Bild nicht neu berechnet werden, sondern nur die Auflösung angepasst werden bis die Maße stimmen, umso unnötige Qualitätsverluste zu umgehen. Code:
#target photoshop var originalRulerUnits = app.preferences.rulerUnits; app.preferences.rulerUnits = Units.CM; main (); function main () { if (app.documents.length < 1) { alert ("No document open to resize."); return; } var dlg; var labelGroup; var inputGroup; var widthInput; var heightInput; var randInput; var buttonGroup; var okButton; var cancelButton; dlg = new Window("dialog", "Bildgröße und Rand?"); dlg.orientation = "row"; labelGroup = dlg.add("group"); labelGroup.orientation = "column"; labelGroup.add("statictext", undefined, "Breite cm:"); labelGroup.add("statictext", undefined, "Höhe cm:"); labelGroup.add("statictext", undefined, "Rand cm:"); inputGroup = dlg.add("group"); inputGroup.orientation = "column"; widthInput = inputGroup.add("edittext", undefined, ""); widthInput.characters = 10; widthInput.active = true; heightInput = inputGroup.add("edittext", undefined, ""); heightInput.characters = 10; randInput = inputGroup.add("edittext", undefined, ""); randInput.characters = 10; buttonGroup = dlg.add("group"); buttonGroup.orientation = "column"; okButton = buttonGroup.add("button", undefined, "OK"); cancelButton = buttonGroup.add("button", undefined, "Cancel"); okButton.onClick = function() { var doc; var docWidth; var docHeight; var imageWidth; var imageHeight; var rand; var black = new SolidColor(); black.rgb.hexValue = "000000"; app.backgroundColor = black; var white = new SolidColor(); white.rgb.hexValue = "FFFFFF"; doc = app.activeDocument; doc.flatten() imageWidth = widthInput.text.replace(/,/g, '.'); imageWidth = new UnitValue(imageWidth, "cm"); imageHeight = heightInput.text.replace(/,/g, '.'); imageHeight = new UnitValue(imageHeight, "cm"); rand = randInput.text.replace(/,/g, '.'); rand = new UnitValue(rand, "cm"); doc.resizeImage(imageWidth - (rand * 2), imageHeight - (rand * 2)); app.backgroundColor = black; doc.resizeCanvas(doc.width + 5 + (rand * 2), doc.height + 5 + (rand * 2), AnchorPosition.MIDDLECENTER) app.backgroundColor = white; doc.resizeCanvas(doc.width, doc.height + 1, AnchorPosition.BOTTOMCENTER) // Dokumentname zu Bildüberschrift var docName = activeDocument.name;; var neuerName1 = docName.replace("_", " "); var neuerName2 = neuerName1.replace("_", " "); var neuerName3 = neuerName2.replace("fertig-merged", ""); var neuerName4 = neuerName3.replace("fertig", ""); var neuerName5 = neuerName4.replace("finish", ""); var neuerName = neuerName5.replace(".psd", ""); main2(); function main2(){ if(!documents.length) return; var w = new Window ("dialog","Bildbeschriftung"); w.orientation = 'row'; w.alignment='top'; w.pnl = w.add('panel', undefined, undefined, {borderStyle:'black'}); w.g15 = w.pnl.add('group'); w.g15.alignment='left'; w.g15.st1 = w.g15.add('statictext',undefined,'Text'); w.g15.et1 = w.g15.add('edittext',undefined,widthInput.text+" x " + imageHeight + " " +neuerName+" Druck: www.feineart.de"); w.g15.et1.preferredSize=[600,20]; w.g20 = w.pnl.add('group'); w.g20.bu1 = w.g20.add('button',undefined,'Create Text'); w.g20.bu1.preferredSize=[140,25]; w.g20.bu2 = w.g20.add('button',undefined,'Cancel'); w.g20.bu2.preferredSize=[140,25]; w.g20.bu1.onClick=function(){ if(w.g15.et1.text == ''){ alert('No text has been entered!'); return; } w.close(0); var startRulerUnits = preferences.rulerUnits; app.preferences.rulerUnits = Units.CM; doc = app.activeDocument; var artLayer = doc.artLayers.add(); artLayer.kind = LayerKind.TEXT; var textItem = artLayer.textItem; textItem.contents = w.g15.et1.text; textItem.size = 13; textItem.font = "ArialMT"; textItem.justification = Justification.CENTER; var textPosition = [doc.width / 2, .65]; textItem.position = textPosition; artLayer.rotate(180, AnchorPosition.MIDDLECENTER); preferences.rulerUnits = startRulerUnits; } w.show(); } dlg.hide(); }; dlg.show(); } //======================================================== app.preferences.rulerUnits = originalRulerUnits; Code:
/* ========================================================== // 2017 John J. McAssey (JJMack) // ======================================================= */ // This script is supplied as is. It is provided as freeware. // The author accepts no liability for any problems arising from its use. /* <javascriptresource> <about>$$$/JavaScripts/PlaceWatermark/About=JJMack's PlaceWatermark ^r^rCopyright 2017 Mouseprints.net^r^rPhotoshop Script^rCustomize using first four var</about> <category>JJMack's Script</category> </javascriptresource> */ #target photoshop; app.bringToFront(); var logoFile = "~/Desktop/JJMack.png"; // Watermark file should be large for resize down works better than up var LogoSize = 10; // percent of document height to resize Watermark to var LogoMargin = 1; // percent of Document height the Watermark should have as a margin var BottomLetf = false; // false = Bottom Right true Bottom Left placeWatermark(logoFile, LogoSize, LogoMargin); // Place Watermark into the bottom of the document function placeWatermark(Image,Size,Margin){ if(!documents.length) return; // if no document return try{ var doc = app.activeDocument; // set Doc object to active document app.displayDialogs = DialogModes.NO; // Dialog off var strtRulerUnits = app.preferences.rulerUnits; // Save Users ruler units var strtTypeUnits = app.preferences.typeUnits; // Save Users Type units app.preferences.rulerUnits = Units.PIXELS; // work with pixels app.preferences.typeUnits = TypeUnits.PIXELS; // work with pixels var fileObj = new File(Image); // the passed file if(!fileObj.exists){ // If file does not exits tell user alert(fileObj.name + " does not exist!"); return; } var layers = app.activeDocument.layers; // get layers app.activeDocument.activeLayer = layers[0] // Target Top Layer placeFile(fileObj); // Place in file the Watermark png file activeDocument.activeLayer.resize(100 ,100,AnchorPosition.MIDDLECENTER); // Insure Place did not scale layer var SB = activeDocument.activeLayer.bounds; // get layers bounds var layerHeight = SB[3] - SB[1]; // get layers height var resizePercent = (100/layerHeight)*(Size/100*doc.height.value); // Percent to resize by activeDocument.activeLayer.resize(resizePercent ,resizePercent,AnchorPosition.MIDDLECENTER); // Resize width and height by percentage SB = activeDocument.activeLayer.bounds; // get resized layers bounds activeDocument.activeLayer.translate(-SB[0].value,-SB[1].value); // Move resized layer to top left canvas corner var LayerWidth = (SB[2].value - SB[0].value); // get resized layers width var LayerHeight = (SB[3].value - SB[1].value); // get resized layers height marginSize = Margin/100*doc.height.value; // Margin size // move resized watermark into the document lower right corner with some margin or lower left if ( BottomLetf) {activeDocument.activeLayer.translate(marginSize,( doc.height.value -marginSize - LayerHeight));} else {activeDocument.activeLayer.translate((doc.width.value -marginSize - LayerWidth),( doc.height.value -marginSize - LayerHeight));} } catch(e) { alert(e + ': on line ' + e.line); } // inform user of error finally{ app.preferences.rulerUnits = strtRulerUnits; // Restore user ruler units app.preferences.typeUnits = strtTypeUnits; // Restore user type units }; }; function placeFile(placeFile) { var desc21 = new ActionDescriptor(); desc21.putPath( charIDToTypeID('null'), new File(placeFile) ); desc21.putEnumerated( charIDToTypeID('FTcs'), charIDToTypeID('QCSt'), charIDToTypeID('Qcsa') ); var desc22 = new ActionDescriptor(); desc22.putUnitDouble( charIDToTypeID('Hrzn'), charIDToTypeID('#Pxl'), 0.000000 ); desc22.putUnitDouble( charIDToTypeID('Vrtc'), charIDToTypeID('#Pxl'), 0.000000 ); desc21.putObject( charIDToTypeID('Ofst'), charIDToTypeID('Ofst'), desc22 ); executeAction( charIDToTypeID('Plc '), desc21, DialogModes.NO ); }; |
#28
|
|||
|
|||
Zitat:
|
#29
|
|||
|
|||
Ich hab zwar gerade keine Zeit und daher dein Script nur mal schnell überflogen, aber ein paar dinge sind mir auf die Schnelle schon mal aufgefallen...
Wo ist in deinem Script der Part, bei dem du das Logo erfolgreich einfügst ("Das Logo bekomme ich schon in mein Dokument")? Zudem verwendest du beim Text einmal bei der Größe die falsche Variable (je nachdem ob du die Werte nun mit einem Komma oder einem Punkt angeben möchtest. Ausserdem kannst du nach wie vor sowohl die Breite, als auch die Höhe angeben - bei quadratischen Bildern überflüssig und im Falle der Möglichkeit auch rechteckige Bilder bedienen zu können, der falsche Ansatz, weil nicht Proportional beschnitten wird, sondern skaliert (was natürlich für verzerrte Bilder führt). Aber zu deinem Problem... Nicht umsonst habe ich in meinem Script, die Auflösung berücksichtigt. Simple Abfrage mit: alert(activeDocument.resolution); oder in deinem Fall alert(doc.resolution); Da du das ganze ja auflösungsabhängig machen möchtest, sollte eine simple If / Else Abfrage die passende Lösung sein. Zum Umrechnen diverser Größen in Bezug auf die Auflösung sollte sich im WWW genug finden lassen |
#30
|
|||
|
|||
Schade ... wieder einmal bleibt ein User die Lösung/Antworten auf Fragen schuldig.
Insofern keine wirklich dumme Entscheidung meinerseits, nicht einfach nur ein fertiges Script zu posten, sondern nur Lösungsansätze. |
Stichworte |
aktion, arbeitsfläche, bildgröße, zuschneiden |
Lesezeichen |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Hilfe bei aktion, aktion wiederholen | Limerick | Hilfestellung, Tipps und Tricks | 0 | 15.01.12 12:55 |
Bildgröße PES 8 | fabiola | Hilfestellung, Tipps und Tricks | 8 | 14.05.10 01:35 |
Aktion-Fehlermeldung "Der Befehl Bildgröße ist nicht verfügbar" | wetterfrosch | Hilfestellung, Tipps und Tricks | 5 | 01.04.09 10:16 |
Bildgröße | ElZorsto | Hilfestellung, Tipps und Tricks | 5 | 12.03.09 19:41 |
Bildgröße | noob83 | Hilfestellung, Tipps und Tricks | 8 | 16.06.08 19:25 |