Neto-Zeme Geschrieben 11. April 2017 Share #1 Geschrieben 11. April 2017 (bearbeitet) Werbung (verschwindet nach Registrierung) Hallo! Update! Ich habe mal ein kleines Skript geschrieben, welches man für Photoshop CC nutzen kann. (einfach als .jsx abspeichern) Es wird nun explizit die kürzere Seite (egal ob höhe oder Breite) auf eine beliebige Größe reduziert. Der Wert darf 640 Pixel nicht unterschreiten und sollte 11360 Pixel nicht überschreiten. Am Anfang der Datei kann man alle gewünschten Werte definieren. Zu Beginn wird ein Hochpass über das volle Bild gelegt, dazu lässt sich der Pixel-Radius am Anfang definieren. Dann werden Unscharf-Maskieren-Filter auf den Helligkeitskanal das LAB-Modus angewendet, welche ihre Werte in einem Array gespeichert haben. Die entsprechenden Pixelzahlen, ab denen sie gelten, stehen darüber. Dann wird das Bild schrittweise immer um 75% verkleinert, bis es den gewünschten Wert erreicht und für jede Stufe kann ein anderer Unscharf-Maskieren-FIlter angewendet werden. Am Ende wird der Hochpass ineinanderkopiert und auf RBG zurückgestellt. Installation Unten stehenden Code einfach in einer Textdatei speichern und diese mit ".jsx" enden lassen. Dann speichern unter: ...\Adobe\Adobe Photoshop CC 2015\Presets\Scripts Photoshop neu starten und unter Datei->Skripte findet sich dann das gewünschte Skript. Jetzt kann man das in einer Aktion speichern und nachher als Stapelverarbeitung wunderbar nutzen.Leider ist es verboten .jsx-Dateien hochzuladen Warum? Sinn der Sache war eine valide Grundauflösung gerade für Web-Dinge wie flickr zu ermöglichen. Bisherige Aktionen können nur Breite oder Höhe ändern, nicht aber einfach die kurze Seite. So werden Hochkant-Bilder schnell mal sehr schlecht aufgelöst. Man kann zwar zwei verschiedene Aktionen einrichten, aber, wenn man viele Bilder verarbeiten will ist das nicht gerade komfortabel. lange Rede, kurzer Sinn, hier das Skript: /* Skript für die automatische Verkleinerung und Schärfung von Bildern mittels Hochpass und Unscharf-Maskierung des LAB-Helligkeitskanals Hierbei wird sich auf die KURZE Seite bezogen, die sozusagen die kleinste Größe angibt. Eine Mindestgröße von 640 px muss eingehalten werden, ansonsten funktioniert das Skript nicht. Es können Bilder bis zu einer Größe der kurzen Seite von 11360 px verkleinert werden. */ /* die Länge der kürzesten Seite */ var shortestsidepx = 1280; /* Pixel für Hochpass (einmalige Aktion zu Beginn) */ var highpasspixel = 1.5; // erstelle 2 arrays für Stärke und Radius und Schwellwert // die auflistung der Werte ist verkehrt herum, damit der Ablauf einfacher wird. Heisst: der erste zu nutzende Wert steht am Ende. // Schritte sind mit Faktor 1,3333 berechnet // Länge für jeweilige Unschärfe-Stufe // (für Werte x <= ) 640 , 854 , 1138 , 1518 , 2023 , 2697 , 3596 , 4794 , 6392 , 8522 , 11360 var unsharparraystrength = new Array( 46 , 46 , 46 , 46 , 47 , 50 , 50 , 50 , 50 , 50 , 50 ); var unsharparrayradius = new Array( 0.1 , 0.1 , 0.1 , 0.1 , 0.2 , 0.2 , 0.3 , 0.3 , 0.3 , 0.3 , 0.3 ); var unsharparraythreshold = new Array( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ); // Save the current preferences var startRulerUnits = app.preferences.rulerUnits; var startTypeUnits = app.preferences.typeUnits; var startDisplayDialogs = app.displayDialogs; // Set PS to use pixels and display no dialogs app.preferences.rulerUnits = Units.PIXELS app.preferences.typeUnits = TypeUnits.PIXELS app.displayDialogs = DialogModes.NO // nehme das aktuelle Dokument doc = app.activeDocument; /* start */ if( ( shortestsidepx > 640 ) && ( doc.width.value < 11360 ) && ( doc.height.value < 11360 ) ) { //dupliziere den Hintergrund var layer = doc.backgroundLayer; var layerdup = layer.duplicate(); // Hochpass drüber legen layerdup.applyHighPass(highpasspixel); // in LAB-Modus ändern doc.changeMode( ChangeMode.LAB ); // den Kanal für die Helligkeit wählen doc.activeChannels = [app.activeDocument.channels.getByName('Helligkeit')]; // Zählvariable für Anzahl der durchzuführenden Schritte erstellen. Dient als Array-Index var counter = 0; if( doc.height.value < doc.width.value ) { var newSize = doc.height.value; } else { var newSize = doc.width.value; } // an welcher Stelle beginnt das Array zu arbeiten? var arraystart = getBaseLog( 100/75, shortestsidepx / 640 ); // wieviele Schritte? counter = getBaseLog( 100/75, newSize / shortestsidepx ); counter = Math.floor( counter + arraystart ); arraystart = Math.floor( arraystart ); var stop = false; // Skalierung beginnen while ( counter >= arraystart ) { layer.applyUnSharpMask( unsharparraystrength[counter], unsharparrayradius[counter], unsharparraythreshold[counter] ); if( stop == true ) { break; } newSize *= 75/100; if(newSize < shortestsidepx) { newSize = shortestsidepx; stop = true; } if( doc.height.value < doc.width.value ) { resizeHeight( newSize ); } else { resizeWidth( newSize ); } counter--; } // wieder auf RGB setzen doc.changeMode( ChangeMode.RGB ) layerdup.blendMode = BlendMode.OVERLAY } // Reset the application preferences app.preferences.rulerUnits = startRulerUnits app.preferences.typeUnits = startTypeUnits app.displayDialogs = startDisplayDialogs function resizeHeight( newSize ) { doc.resizeImage( null, UnitValue( newSize, "px" ), null, ResampleMethod.BICUBIC, null ) } function resizeWidth( newSize ) { doc.resizeImage( UnitValue( newSize, "px" ), null, null, ResampleMethod.BICUBIC, null ) } function getBaseLog ( x, y ) { return Math.log( y ) / Math.log( x ); } Hoffe, es hilft jemandem. bearbeitet 13. April 2017 von Neto-Zeme ShaiHulud, flyingrooster und leicanik haben darauf reagiert 3 Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Neto-Zeme Geschrieben 13. April 2017 Autor Share #2 Geschrieben 13. April 2017 gaupdated! jetzt läuft das Skript immer auf die kürzeste Seite.Admin: bitte in das richtige Unterforum verschieben (Digitaler Workflow Link zum Beitrag Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden