Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
graphic:javascript:photoshop [2022/12/03 19:55] – [Enable Javascript in Photoshop 2022 above] ying | graphic:javascript:photoshop [2023/03/05 03:02] (current) – [Doc operation code] ying | ||
---|---|---|---|
Line 2: | Line 2: | ||
* to avoid warning pop dialog, you need to create a file at < | * to avoid warning pop dialog, you need to create a file at < | ||
+ | %appdata%\Adobe\Adobe Photoshop 2022\Adobe Photoshop 2022 Settings\PSUserConfig | ||
at path: | at path: | ||
%appdata%\Adobe\Adobe Photoshop 2022\Adobe Photoshop 2022 Settings\ | %appdata%\Adobe\Adobe Photoshop 2022\Adobe Photoshop 2022 Settings\ | ||
Line 8: | Line 9: | ||
UseSystemStylus 0 | UseSystemStylus 0 | ||
</ | </ | ||
+ | * more config text cmd here: https:// | ||
====== Javascript Version and Compatibility ====== | ====== Javascript Version and Compatibility ====== | ||
Line 286: | Line 287: | ||
</ | </ | ||
* resize doc <code javascript> | * resize doc <code javascript> | ||
+ | * resize to A4 size ratio <code javascript> | ||
+ | /* | ||
+ | reisize to fit A4 | ||
+ | by ying n chatGPT | ||
+ | 2023.03.05 | ||
+ | */ | ||
+ | // Get the active document | ||
+ | var doc = app.activeDocument; | ||
+ | app.backgroundColor.rgb.red = 255; | ||
+ | app.backgroundColor.rgb.green = 255; | ||
+ | app.backgroundColor.rgb.blue = 255; | ||
+ | // Define the A4 size in pixels (assuming 300 DPI) | ||
+ | var a4Width = 2480; // 8.27 inches * 300 pixels per inch | ||
+ | var a4Height = 3508; // 11.69 inches * 300 pixels per inch | ||
+ | var a4Ratio = a4Width / a4Height; | ||
+ | |||
+ | // Get the current canvas size | ||
+ | var currentWidth = doc.width.value; | ||
+ | var currentHeight = doc.height.value; | ||
+ | var currentRatio = currentWidth / currentHeight; | ||
+ | |||
+ | // Calculate the new canvas size | ||
+ | var newWidth = currentWidth; | ||
+ | var newHeight = currentHeight; | ||
+ | if (currentRatio > a4Ratio) { | ||
+ | // Extend the height to match the A4 ratio | ||
+ | newHeight = Math.round(newWidth / a4Ratio); | ||
+ | } else { | ||
+ | // Extend the width to match the A4 ratio | ||
+ | newWidth = Math.round(newHeight * a4Ratio); | ||
+ | } | ||
+ | |||
+ | // Only resize the canvas if the new size is larger than the current size | ||
+ | if (newWidth > currentWidth || newHeight > currentHeight) { | ||
+ | // Calculate the position of the current content | ||
+ | var x = Math.round((newWidth - currentWidth) / 2); | ||
+ | var y = Math.round((newHeight - currentHeight) / 2); | ||
+ | |||
+ | // Resize the canvas | ||
+ | doc.resizeCanvas(newWidth, | ||
+ | } | ||
+ | |||
+ | </ | ||
* file and folder <code javascript> | * file and folder <code javascript> | ||
var samplesFolder = Folder(app.path + "/ | var samplesFolder = Folder(app.path + "/ | ||
Line 321: | Line 365: | ||
} | } | ||
</ | </ | ||
+ | * print each layer <code javascript> | ||
+ | var msg = "Make sure you set your print setting correct and done,\nthen click Yes to run batch print layer" | ||
+ | if (confirm(msg)) { | ||
+ | // Get the current active document | ||
+ | var doc = app.activeDocument; | ||
+ | // Get all the layers except the background layer | ||
+ | var layers = []; | ||
+ | for (var i = 0; i < doc.layers.length; | ||
+ | if(!doc.layers[i].isBackgroundLayer){ | ||
+ | layers.push(doc.layers[i]); | ||
+ | } | ||
+ | } | ||
+ | // Hide all the layers | ||
+ | for (var i = 0; i < layers.length; | ||
+ | layers[i].visible = false; | ||
+ | } | ||
+ | |||
+ | // Loop through each layer and print it | ||
+ | for (var i = 0; i < layers.length; | ||
+ | // Show the current layer | ||
+ | layers[i].visible = true; | ||
+ | | ||
+ | // Print the current layer | ||
+ | app.activeDocument.print(); | ||
+ | // | ||
+ | | ||
+ | // Hide the current layer | ||
+ | layers[i].visible = false; | ||
+ | } | ||
+ | |||
+ | // Show all the layers again | ||
+ | for (var i = 0; i < layers.length; | ||
+ | layers[i].visible = true; | ||
+ | } | ||
+ | } else { | ||
+ | alert(" | ||
+ | } | ||
+ | </ | ||
+ | * split image vertically equally into N part, and stack into new doc, optionally crop border pixel <code javascript> | ||
+ | // | ||
+ | //# image split by n | ||
+ | // | ||
+ | var doc = app.activeDocument; | ||
+ | |||
+ | // Prompt the user for the number of parts | ||
+ | var n = parseInt(prompt(" | ||
+ | |||
+ | // Calculate the height of each part | ||
+ | var partHeight = Math.floor(doc.height / n); | ||
+ | |||
+ | // Create a new document with the width of the original image and the height of one part | ||
+ | var newDoc = app.documents.add(doc.width, | ||
+ | |||
+ | // Loop through each part of the image | ||
+ | for (var i = 0; i < n; i++) { | ||
+ | // Define the source rectangle for the part | ||
+ | var sourceRect = [ | ||
+ | [0, i * partHeight], | ||
+ | [doc.width, i * partHeight], | ||
+ | [doc.width, (i + 1) * partHeight], | ||
+ | [0, (i + 1) * partHeight] | ||
+ | ]; | ||
+ | |||
+ | // Activate the source document | ||
+ | app.activeDocument = doc; | ||
+ | // Deselect any active selection | ||
+ | doc.selection.deselect(); | ||
+ | // Create a new selection | ||
+ | doc.selection.select(sourceRect); | ||
+ | // Copy the part to the new document | ||
+ | doc.selection.copy(); | ||
+ | // Activate the new document | ||
+ | app.activeDocument = newDoc; | ||
+ | // Paste the part into the new document | ||
+ | newDoc.paste(); | ||
+ | // Move the selection down by the height of one part | ||
+ | app.activeDocument = doc; | ||
+ | doc.selection.translateBoundary(0, | ||
+ | } | ||
+ | // | ||
+ | //# trim border | ||
+ | // | ||
+ | app.activeDocument = newDoc; | ||
+ | newDoc.trim(TrimType.TOPLEFT, | ||
+ | </ | ||
===== Execute code ===== | ===== Execute code ===== | ||