Learn how to write a script that creates text blocks using the photo-letters you put into a folder. Throughout this tutorial you’ll download some images of signs and crop and resize them to create the letters. Then you’ll write the script asking for a text input, then tiling the letter images accordingly.
Here is what we’ll get
Before we start lets see the final image we’ll create through out this tutorial. You can download the archive containing the sample glyps and the script here.
In this tutorial we’ll first create 300×300 photo letters from photographs. Then we’ll create a script. Our script will ask the user to input some text and a number of columns. Using this information it will calculate the number of rows necessary and then tile 300x300pixel images of letters in the pre-calculated grid and give us a final image like in the below.
Before we start lets see the final image we’ll create through out this tutorial. You can download the archive containing the sample glyps and the script here.
In this tutorial we’ll first create 300×300 photo letters from photographs. Then we’ll create a script. Our script will ask the user to input some text and a number of columns. Using this information it will calculate the number of rows necessary and then tile 300x300pixel images of letters in the pre-calculated grid and give us a final image like in the below.

Before You Start | Tutorial Details:
Software Used: Adobe Photoshop
Tutorial Time:![]()
![]()
![]()
Difficulty Level: ★★★★★
Tutorial Time:



Difficulty Level: ★★★★★
Files to Download:
No files needed
No files needed


Create the Folder
OK. Let’s start by creating a folder for our script file and glyph files. If you are a Windowser, open up the Drive “C:” and create a new folder named “PSA-TypoTiler”. If you’re using a Mac, then create a new folder on the Desktop and name it “PSA-TypoTiler”. Into this folder, we’re gonna put all the images of letters and our script file as well.
OK. Let’s start by creating a folder for our script file and glyph files. If you are a Windowser, open up the Drive “C:” and create a new folder named “PSA-TypoTiler”. If you’re using a Mac, then create a new folder on the Desktop and name it “PSA-TypoTiler”. Into this folder, we’re gonna put all the images of letters and our script file as well.


Prepare the Glyphs
The first thing to do is to prepare the letters, or let’s just call them glyphs. You can find images of letters by searching Flicker for some signs, or you can grab your camera, head to a big city full of signs and shoot your own letters. Here i give you links of some photos we’ll use in this tutorial to create letters A, E, M, O, S, W and the Star. We’ll replace spaces with a star. Open up the first image in Photoshop. Now we have to decide how wide and high our glyps will be. For this tutorial we’ll use 300×300 pixels glyps and it is important for all glyps to have the exact same dimensions. Get the Crop Tool, set Width and Height to 300 pixels, make a rectangular selection surrounding letter A and double click inside the selection to crop. After croping it Photoshop will scale it to 300×300 pixels. Then save the image as a JPEG file into the PSA-TypoTiler folder you have just created at the first step and name it “a.JPG”.
The first thing to do is to prepare the letters, or let’s just call them glyphs. You can find images of letters by searching Flicker for some signs, or you can grab your camera, head to a big city full of signs and shoot your own letters. Here i give you links of some photos we’ll use in this tutorial to create letters A, E, M, O, S, W and the Star. We’ll replace spaces with a star. Open up the first image in Photoshop. Now we have to decide how wide and high our glyps will be. For this tutorial we’ll use 300×300 pixels glyps and it is important for all glyps to have the exact same dimensions. Get the Crop Tool, set Width and Height to 300 pixels, make a rectangular selection surrounding letter A and double click inside the selection to crop. After croping it Photoshop will scale it to 300×300 pixels. Then save the image as a JPEG file into the PSA-TypoTiler folder you have just created at the first step and name it “a.JPG”.


Apply Clouds Filter
Now open other images and crop letters E, M, O, S, W and the Star. Crop and save them as e.JPG, m.JPG, o.JPG, s.JPG, w.JPG and star.JPG as you did at the previous step.
Now open other images and crop letters E, M, O, S, W and the Star. Crop and save them as e.JPG, m.JPG, o.JPG, s.JPG, w.JPG and star.JPG as you did at the previous step.


Start Writing the Script
OK. Let’s start writing the script. Start the Adobe ExtendedScript Toolkit application. Enter the code below. The first line says that the units in Pixels, and when we say e.g. “blockheight=300″, it means 300 pixels. Other lines defines variables assingning them a value except the first one, it only declares a variable, we’ll give it a value later. “blockwidth” and “blockheight” variables are set to 300(pixels) this is the dimension of our glyphs. “columns” is going to be set by the user later, but the default value is set to 3. Finally, the “horizontal” and the “vertical” variables is going to be used to count the columns and rows.
OK. Let’s start writing the script. Start the Adobe ExtendedScript Toolkit application. Enter the code below. The first line says that the units in Pixels, and when we say e.g. “blockheight=300″, it means 300 pixels. Other lines defines variables assingning them a value except the first one, it only declares a variable, we’ll give it a value later. “blockwidth” and “blockheight” variables are set to 300(pixels) this is the dimension of our glyphs. “columns” is going to be set by the user later, but the default value is set to 3. Finally, the “horizontal” and the “vertical” variables is going to be used to count the columns and rows.
app.preferences.rulerUnits = Units.PIXELS;
var rows;
var blockwidth = 300;
var blockheight = 300;
var columns = 3;
var horizontal = 0;
var vertical = 0;
var rows;
var blockwidth = 300;
var blockheight = 300;
var columns = 3;
var horizontal = 0;
var vertical = 0;

Create the Dialog Box
Now write or paste the below code. Here we create a new dialog named “dlg” and set it’s title to “PsAwesome-TypoTiler-v1.0″. Then we define a Panel which is 340 pixels wide and 60 pixels high and add a text box saying “Width” and a Scrollbar that has a minimum value of 1, maximum value of 16 and default value of 3. We’ll use that scroll bar to get the number of columns. In the next line we add a text box to show the value of the scrollbar, then make it uneditable by the user and pass the value of the scrollbar to that text box. Finally we have a function which will be triggered when the scrollbar is changed. That function rounds the floating number of the scrollbar, passes it to the text box and set the pre-defined variable “columns” to that value as well. Until now we have created a Dialog Box and some panels on it, at the end the code we wrote so far will look like as in the below image. To see it you do two things. The first is to set the Target Application to Photoshop. Then add “dlg.center();” and “dlg.show();” lines at the bottom of the code to center the dialog and make it visible, and remember it should always be at the bottom. Now you can click the Play button to see what hou have done by now.
Now write or paste the below code. Here we create a new dialog named “dlg” and set it’s title to “PsAwesome-TypoTiler-v1.0″. Then we define a Panel which is 340 pixels wide and 60 pixels high and add a text box saying “Width” and a Scrollbar that has a minimum value of 1, maximum value of 16 and default value of 3. We’ll use that scroll bar to get the number of columns. In the next line we add a text box to show the value of the scrollbar, then make it uneditable by the user and pass the value of the scrollbar to that text box. Finally we have a function which will be triggered when the scrollbar is changed. That function rounds the floating number of the scrollbar, passes it to the text box and set the pre-defined variable “columns” to that value as well. Until now we have created a Dialog Box and some panels on it, at the end the code we wrote so far will look like as in the below image. To see it you do two things. The first is to set the Target Application to Photoshop. Then add “dlg.center();” and “dlg.show();” lines at the bottom of the code to center the dialog and make it visible, and remember it should always be at the bottom. Now you can click the Play button to see what hou have done by now.
//Create new dialog
var dlg = new Window(‘dialog’,‘PsAwesome-TypoTiler-v1.0′);
//Add a Panel to contain a Scrollbar and a Text Field
dlg.sizePnl = dlg.add(‘panel’, [0,0,340,60], ‘Set Mosaic Width [# of Cells]‘);
dlg.sizePnl.widthSt = dlg.sizePnl.add(‘statictext’, [15,15,65,35], ‘Width:’);
dlg.sizePnl.widthScrl = dlg.sizePnl.add(‘scrollbar’, [75,15,195,35], 3, 1, 16);
dlg.sizePnl.widthEt = dlg.sizePnl.add(‘edittext’, [205,15,245,35]);
dlg.sizePnl.widthEt.enabled=false;
dlg.sizePnl.widthEt.text=dlg.sizePnl.widthScrl.value;
dlg.sizePnl.widthScrl.onChanging = function(){
dlg.sizePnl.widthEt.text=Math.floor(this.value);
columns=Math.floor(this.value);
}
var dlg = new Window(‘dialog’,‘PsAwesome-TypoTiler-v1.0′);
//Add a Panel to contain a Scrollbar and a Text Field
dlg.sizePnl = dlg.add(‘panel’, [0,0,340,60], ‘Set Mosaic Width [# of Cells]‘);
dlg.sizePnl.widthSt = dlg.sizePnl.add(‘statictext’, [15,15,65,35], ‘Width:’);
dlg.sizePnl.widthScrl = dlg.sizePnl.add(‘scrollbar’, [75,15,195,35], 3, 1, 16);
dlg.sizePnl.widthEt = dlg.sizePnl.add(‘edittext’, [205,15,245,35]);
dlg.sizePnl.widthEt.enabled=false;
dlg.sizePnl.widthEt.text=dlg.sizePnl.widthScrl.value;
dlg.sizePnl.widthScrl.onChanging = function(){
dlg.sizePnl.widthEt.text=Math.floor(this.value);
columns=Math.floor(this.value);
}


Add another Panel
Continue writing the code. Here in this piece of code, we add another Panel named “textPnl” to the “dlg” window. Then we add a multiline editable text box for user to input text.
Continue writing the code. Here in this piece of code, we add another Panel named “textPnl” to the “dlg” window. Then we add a multiline editable text box for user to input text.
//Add a Panel to contain input text
dlg.textPnl = dlg.add(‘panel’, [0,0,340,130], ‘Enter Text’);
dlg.textPnl.msgEt = dlg.textPnl.add(‘edittext’, [20,20,315,105], ”,{multiline:true});
dlg.textPnl = dlg.add(‘panel’, [0,0,340,130], ‘Enter Text’);
dlg.textPnl.msgEt = dlg.textPnl.add(‘edittext’, [20,20,315,105], ”,{multiline:true});


Add the Buttons
Using the below code we add a Group to our “dlg” Dialog Box to hold the two buttons, “GO” and “Cancel”.
Using the below code we add a Group to our “dlg” Dialog Box to hold the two buttons, “GO” and “Cancel”.
//Add a Group to contain Buttons
dlg.buttons = dlg.add(‘group’);
dlg.buttons.orientation=‘row’;
dlg.buttons.bu1 = dlg.buttons.add(‘button’,undefined,‘GO’);
dlg.buttons.bu2 = dlg.buttons.add(‘button’,undefined,‘Cancel’);
dlg.buttons = dlg.add(‘group’);
dlg.buttons.orientation=‘row’;
dlg.buttons.bu1 = dlg.buttons.add(‘button’,undefined,‘GO’);
dlg.buttons.bu2 = dlg.buttons.add(‘button’,undefined,‘Cancel’);


Create the Function
Now here the important part begins. Start by creating a Function to be triggered when user clicks the “GO” button. The first thing the Function does is to close the dialog box. Then it creates a variable named “textt” and passes the user written text to that variable..
Now here the important part begins. Start by creating a Function to be triggered when user clicks the “GO” button. The first thing the Function does is to close the dialog box. Then it creates a variable named “textt” and passes the user written text to that variable..
//Add a Function to be triggered on button click
dlg.buttons.bu1.onClick = function(){
dlg.close();
var textt=dlg.textPnl.msgEt.text;
dlg.buttons.bu1.onClick = function(){
dlg.close();
var textt=dlg.textPnl.msgEt.text;

Analyze the Text and Create Document
The code below checks if the number of letters in the user text divided by the number of columns give a decimal or not. If it does, it means we will need another row at the bottom so it adds 1 to number of letters divided by number of columns. If the result doesn’t have a decimal it means that it is something like 6/3 or 8/4 so number of letters divided by number of columns gives us the number of rows. We’ll use that information to create a new document. For now we know how many columns and rows we’ll need, and we can calculate the dimensions of our document. Let’s define two variables; one of them is “wd”, the width of the document which equals to columns x blockwith, the width of our individual glyphs. The other variable is for the height of the document which equals to rows*blockheight, the width of our individual glyphs. The last line of the below code creates a new document wd x hg pixels at a resolution of 300, named “PSA TypoTiler”.
The code below checks if the number of letters in the user text divided by the number of columns give a decimal or not. If it does, it means we will need another row at the bottom so it adds 1 to number of letters divided by number of columns. If the result doesn’t have a decimal it means that it is something like 6/3 or 8/4 so number of letters divided by number of columns gives us the number of rows. We’ll use that information to create a new document. For now we know how many columns and rows we’ll need, and we can calculate the dimensions of our document. Let’s define two variables; one of them is “wd”, the width of the document which equals to columns x blockwith, the width of our individual glyphs. The other variable is for the height of the document which equals to rows*blockheight, the width of our individual glyphs. The last line of the below code creates a new document wd x hg pixels at a resolution of 300, named “PSA TypoTiler”.
//Calculate the grid
if ((textt.length/columns)>Math.floor(textt.length/columns)) {
rows = Math.floor(textt.length/columns)+1;
} else {
rows = Math.floor(textt.length/columns);
}
var wd= blockwidth*columns;
var hg= blockheight*rows;
// create a new document
var psaDoc = app.documents.add(wd, hg, 300, “PSA TypoTiler”);
if ((textt.length/columns)>Math.floor(textt.length/columns)) {
rows = Math.floor(textt.length/columns)+1;
} else {
rows = Math.floor(textt.length/columns);
}
var wd= blockwidth*columns;
var hg= blockheight*rows;
// create a new document
var psaDoc = app.documents.add(wd, hg, 300, “PSA TypoTiler”);

Open the Glyph and Copy
After creating the new document, in the first line of the below code we start a loop which repeat for each character of the input text. Then we create a “fname” variable and assign each letter of the text to it and add “.JPG”. If the input text is “PEACE” for example, the loop will run 5 times and fname will be “p.JPG”, “e.JPG”, “a.JPG”, “c.JPG” and “e.JPG”. If the current character is a space, then fname will be “space.JPG”. With in the loop we create a variable called “glyphToOpen” and define the path and the filename to open, and open it with “open(glyphToOpen)” command. Assume that the text is “PEACE”, and the loop is running for the second time, “fname” will be “e.JPG” and the “glyphToOpen” will be “C:/PSA-TypoTiler/e.JPG”. Then we get the layer named “Background”, select it all, copy the selection and close the document. After the document is closed the active document is now “PSA TypoTiler”.
After creating the new document, in the first line of the below code we start a loop which repeat for each character of the input text. Then we create a “fname” variable and assign each letter of the text to it and add “.JPG”. If the input text is “PEACE” for example, the loop will run 5 times and fname will be “p.JPG”, “e.JPG”, “a.JPG”, “c.JPG” and “e.JPG”. If the current character is a space, then fname will be “space.JPG”. With in the loop we create a variable called “glyphToOpen” and define the path and the filename to open, and open it with “open(glyphToOpen)” command. Assume that the text is “PEACE”, and the loop is running for the second time, “fname” will be “e.JPG” and the “glyphToOpen” will be “C:/PSA-TypoTiler/e.JPG”. Then we get the layer named “Background”, select it all, copy the selection and close the document. After the document is closed the active document is now “PSA TypoTiler”.
//Open glyph copy
for (var i = 0; i var fname = textt.charAt(i)+‘.JPG’;
if (textt.charAt(i)==” “){
fname = ‘space.JPG’;
}
var glyphToOpen = File(“c:/PSA-TypoTiler/” + fname)
open(glyphToOpen)
var layerRef = app.activeDocument.artLayers.getByName(“Background”);
app.activeDocument.selection.selectAll();
app.activeDocument.selection.copy();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
for (var i = 0; i
if (textt.charAt(i)==” “){
fname = ‘space.JPG’;
}
var glyphToOpen = File(“c:/PSA-TypoTiler/” + fname)
open(glyphToOpen)
var layerRef = app.activeDocument.artLayers.getByName(“Background”);
app.activeDocument.selection.selectAll();
app.activeDocument.selection.copy();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
If you’re using Mac then you should define the path like this:
var glyphToOpen = File(“~Desktop/PSA-TypoTiler/” + fname)
Selection Basics
To make a selection you must define a shape. To make a rectangular selection you should define the corners in the order shown below.
To make a selection you must define a shape. To make a rectangular selection you should define the corners in the order shown below.


Select and Paste
The below code selects the proper rectangular area on the active document which is now “PSA TypoTiler”. We use two variables to properly make the selections. “horizontal” is the current row, vertical is the current “column”. If “horizontal” reaches the number of columns it is set to 0 and “1″ is add to “vertical”, it means we are at the first cell of the second row. After the selection is made the copied image of the glyph is pasted.
The below code selects the proper rectangular area on the active document which is now “PSA TypoTiler”. We use two variables to properly make the selections. “horizontal” is the current row, vertical is the current “column”. If “horizontal” reaches the number of columns it is set to 0 and “1″ is add to “vertical”, it means we are at the first cell of the second row. After the selection is made the copied image of the glyph is pasted.
//Make the proper selection
var shapeRef = [
[(horizontal*blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),((vertical*blockheight)+blockheight)],
[(horizontal*blockwidth),((vertical*blockheight)+blockheight)]
]
app.activeDocument.selection.select(shapeRef)
horizontal= horizontal+1 ;
app.activeDocument.paste();
if(horizontal == columns) {
//end of a column, move to the next one
vertical = vertical+1;
//reset the horizontal
horizontal = 0;
}
}
}
var shapeRef = [
[(horizontal*blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),((vertical*blockheight)+blockheight)],
[(horizontal*blockwidth),((vertical*blockheight)+blockheight)]
]
app.activeDocument.selection.select(shapeRef)
horizontal= horizontal+1 ;
app.activeDocument.paste();
if(horizontal == columns) {
//end of a column, move to the next one
vertical = vertical+1;
//reset the horizontal
horizontal = 0;
}
}
}

How it Works
Below image can explain how the above code can make selections. The loop is repeated until the last letter of the input text is placed.
Below image can explain how the above code can make selections. The loop is repeated until the last letter of the input text is placed.


Finalize the Script
Finally add these lines at the end of your code if you didn’t. This will center the dialog and make it visible. Now save the code as “PSA-TypoTiler.jsx” into “PSA-TypoTiler” folder.
Finally add these lines at the end of your code if you didn’t. This will center the dialog and make it visible. Now save the code as “PSA-TypoTiler.jsx” into “PSA-TypoTiler” folder.
//Center and show dialog
dlg.center();
dlg.show();
dlg.center();
dlg.show();
Here is the complete code:
app.preferences.rulerUnits = Units.PIXELS;
var rows;
var blockwidth = 300;
var blockheight = 300;
var columns = 3;
var horizontal = 0;
var vertical = 0;
//Create new dialog
var dlg = new Window(‘dialog’,‘PsAwesome-TypoTiler-v1.0′);
//Add a Panel to contain a Scrollbar and a Text Field
dlg.sizePnl = dlg.add(‘panel’, [0,0,340,60], ‘Set Mosaic Width [# of Cells]‘);
dlg.sizePnl.widthSt = dlg.sizePnl.add(‘statictext’, [15,15,65,35], ‘Width:’);
dlg.sizePnl.widthScrl = dlg.sizePnl.add(‘scrollbar’, [75,15,195,35], 3, 1, 16);
dlg.sizePnl.widthEt = dlg.sizePnl.add(‘edittext’, [205,15,245,35]);
dlg.sizePnl.widthEt.enabled=false;
dlg.sizePnl.widthEt.text=dlg.sizePnl.widthScrl.value;
dlg.sizePnl.widthScrl.onChanging = function(){
dlg.sizePnl.widthEt.text=Math.floor(this.value);
columns=Math.floor(this.value);
}
//Add a Panel to contain input text
dlg.textPnl = dlg.add(‘panel’, [0,0,340,130], ‘Enter Text’);
dlg.textPnl.msgEt = dlg.textPnl.add(‘edittext’, [20,20,315,105], ”,{multiline:true});
//Add a Group to contain Buttons
dlg.buttons = dlg.add(‘group’);
dlg.buttons.orientation=‘row’;
dlg.buttons.bu1 = dlg.buttons.add(‘button’,undefined,‘GO’);
dlg.buttons.bu2 = dlg.buttons.add(‘button’,undefined,‘Cancel’);
//Add a Function to be triggered on button click
dlg.buttons.bu1.onClick = function(){
dlg.close();
var textt=dlg.textPnl.msgEt.text;
//Calculate the grid
if ((textt.length/columns)>Math.floor(textt.length/columns)) {
rows = Math.floor(textt.length/columns)+1;
} else {
rows = Math.floor(textt.length/columns);
}
var wd= blockwidth*columns;
var hg= blockheight*rows;
// create a new document
var psaDoc = app.documents.add(wd, hg, 300, ”PSA TypoTiler”);
//Open glyph copy
for (var i = 0; i var fname = textt.charAt(i)+‘.JPG’;
if (textt.charAt(i)==” “){
fname = ‘space.JPG’;
}
var glyphToOpen = File(“c:/PSA-TypoTiler/” + fname)
open(glyphToOpen)
var layerRef = app.activeDocument.artLayers.getByName(“Background”);
app.activeDocument.selection.selectAll();
app.activeDocument.selection.copy();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
//Make the proper selection
var shapeRef = [
[(horizontal*blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),((vertical*blockheight)+blockheight)],
[(horizontal*blockwidth),((vertical*blockheight)+blockheight)]
]
app.activeDocument.selection.select(shapeRef)
horizontal= horizontal+1 ;
app.activeDocument.paste();
if(horizontal == columns) {
//end of a column, move to the next one
vertical = vertical+1;
//reset the horizontal
horizontal = 0;
}
}
}
//Center and show dialog
dlg.center();
dlg.show();
var rows;
var blockwidth = 300;
var blockheight = 300;
var columns = 3;
var horizontal = 0;
var vertical = 0;
//Create new dialog
var dlg = new Window(‘dialog’,‘PsAwesome-TypoTiler-v1.0′);
//Add a Panel to contain a Scrollbar and a Text Field
dlg.sizePnl = dlg.add(‘panel’, [0,0,340,60], ‘Set Mosaic Width [# of Cells]‘);
dlg.sizePnl.widthSt = dlg.sizePnl.add(‘statictext’, [15,15,65,35], ‘Width:’);
dlg.sizePnl.widthScrl = dlg.sizePnl.add(‘scrollbar’, [75,15,195,35], 3, 1, 16);
dlg.sizePnl.widthEt = dlg.sizePnl.add(‘edittext’, [205,15,245,35]);
dlg.sizePnl.widthEt.enabled=false;
dlg.sizePnl.widthEt.text=dlg.sizePnl.widthScrl.value;
dlg.sizePnl.widthScrl.onChanging = function(){
dlg.sizePnl.widthEt.text=Math.floor(this.value);
columns=Math.floor(this.value);
}
//Add a Panel to contain input text
dlg.textPnl = dlg.add(‘panel’, [0,0,340,130], ‘Enter Text’);
dlg.textPnl.msgEt = dlg.textPnl.add(‘edittext’, [20,20,315,105], ”,{multiline:true});
//Add a Group to contain Buttons
dlg.buttons = dlg.add(‘group’);
dlg.buttons.orientation=‘row’;
dlg.buttons.bu1 = dlg.buttons.add(‘button’,undefined,‘GO’);
dlg.buttons.bu2 = dlg.buttons.add(‘button’,undefined,‘Cancel’);
//Add a Function to be triggered on button click
dlg.buttons.bu1.onClick = function(){
dlg.close();
var textt=dlg.textPnl.msgEt.text;
//Calculate the grid
if ((textt.length/columns)>Math.floor(textt.length/columns)) {
rows = Math.floor(textt.length/columns)+1;
} else {
rows = Math.floor(textt.length/columns);
}
var wd= blockwidth*columns;
var hg= blockheight*rows;
// create a new document
var psaDoc = app.documents.add(wd, hg, 300, ”PSA TypoTiler”);
//Open glyph copy
for (var i = 0; i
if (textt.charAt(i)==” “){
fname = ‘space.JPG’;
}
var glyphToOpen = File(“c:/PSA-TypoTiler/” + fname)
open(glyphToOpen)
var layerRef = app.activeDocument.artLayers.getByName(“Background”);
app.activeDocument.selection.selectAll();
app.activeDocument.selection.copy();
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
//Make the proper selection
var shapeRef = [
[(horizontal*blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),(vertical*blockheight)],
[((horizontal*blockwidth)+blockwidth),((vertical*blockheight)+blockheight)],
[(horizontal*blockwidth),((vertical*blockheight)+blockheight)]
]
app.activeDocument.selection.select(shapeRef)
horizontal= horizontal+1 ;
app.activeDocument.paste();
if(horizontal == columns) {
//end of a column, move to the next one
vertical = vertical+1;
//reset the horizontal
horizontal = 0;
}
}
}
//Center and show dialog
dlg.center();
dlg.show();

Run the Script
Start Photoshop. Go to File > Scripts > Browse and select the “PSA-TypoTiler.jsx”. You’ll see the dialogbox, leave width at 3, enter the text “awe some ” and hit go.
Start Photoshop. Go to File > Scripts > Browse and select the “PSA-TypoTiler.jsx”. You’ll see the dialogbox, leave width at 3, enter the text “awe some ” and hit go.


Congratulations
Here is the final image i had using the PSA TypoTiler script. I hope you liked this tutorial, had fun making it and i hope it will become handy.
Here is the final image i had using the PSA TypoTiler script. I hope you liked this tutorial, had fun making it and i hope it will become handy.
