Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Script to sub-divide an image into 4x6s.

New Here ,
Mar 21, 2010 Mar 21, 2010

I like to make large images, like 20x30s and 30x40s.  Proofing these is expensive.  I'm looking for a script that would automatically take an image file and carve it into adjoining 4x6s that I can send through a printing service for the first proof.  A 30x40 print costs me $78 with shipping.  The 50 4x6s would only cost $10-20 dollars assuming I printed them all.

So has anyone writen or know of a script of this nature?

TOPICS
Actions and scripting
2.2K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Valorous Hero , Mar 22, 2010 Mar 22, 2010

I have modified the script and added a checkbox, if ticked it will save and close each new section, save them as jpg with a quality of 12 into a folder off the active documents folder called Chop-O-Matic. If it's a new document that hasn't been saved the folder will be created on the desktop. On completion the new folder will be opened.


#target photoshop
function main(){
var dlg=
"dialog{text:'Script Interface',bounds:[100,100,380,290],"+
"panel0:Panel{bounds:[10,10,270,180] , text:'' ,properties:{bo

...
Translate
Adobe
Community Expert ,
Mar 22, 2010 Mar 22, 2010

You could do a search for xbytor’s »TileMaker«-Script.

But are You sure the prints would measure up to the more expensive proofs in color-consistency and -reliabilty?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 22, 2010 Mar 22, 2010

I found the tile maker.  It's erroring out on my computer, Windows, CS2 combo.

I do not expect the mass printed cheap 4x6s to come close to rivaling a well made 30x40 print, particularly in the color department.  What I do hope is that it will show me the limits of image quality blown up to such large size.  I want an inexpensive way to "proof" image sharpness and for the little things one only notices when the image is enlarged.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Valorous Hero ,
Mar 22, 2010 Mar 22, 2010

Here is a script that will chop the active document into sections.


#target photoshop
function main(){
var dlg=
"dialog{text:'Script Interface',bounds:[100,100,380,260],"+
"panel0:Panel{bounds:[10,10,270,150] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+
"title:StaticText{bounds:[60,10,220,40] , text:'Chop-o-matic' ,properties:{scrolling:undefined,multiline:undefined}},"+
"panel1:Panel{bounds:[10,40,250,100] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+
"statictext1:StaticText{bounds:[10,10,111,30] , text:'Accross' ,properties:{scrolling:undefined,multiline:undefined}},"+
"statictext2:StaticText{bounds:[140,10,230,27] , text:'Down' ,properties:{scrolling:undefined,multiline:undefined}},"+
"across:DropDownList{bounds:[10,30,100,50]},"+
"down:DropDownList{bounds:[140,30,230,50]}},"+
"button0:Button{bounds:[10,110,110,130] , text:'Ok' },"+
"button1:Button{bounds:[150,110,250,130] , text:'Cancel' }}};"
var win = new Window(dlg,'Chop-o-matic');
if(version.substr(0,version.indexOf('.'))>9){
win.panel0.title.graphics.font = ScriptUI.newFont("Arial","BOLD",20);
g = win.graphics;
var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [1.00, 1.00, 1.00, 1]);
g.backgroundColor = myBrush;
var myPen =g.newPen (g.PenType.SOLID_COLOR, [1.00, 0.00, 0.00, 1],lineWidth=1);
}
win.center();
  for(var i=1;i<31;i++){
   win.panel0.panel1.across.add ('item', i);    
   win.panel0.panel1.down.add ('item', i);    
  }
win.panel0.panel1.across.selection=0;
win.panel0.panel1.down.selection=0;
var done = false;
    while (!done) {
      var x = win.show();
      if (x == 0 || x == 2) {
        win.canceled = true;
        done = true;
      } else if (x == 1) {
        done = true;
        {
if(!documents.length)return;
var startRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
doc = app.activeDocument;
app.displayDialogs = DialogModes.NO;
var tilesAcross = parseInt(win.panel0.panel1.across.selection.index)+1;
var tilesDown =parseInt(win.panel0.panel1.down.selection.index)+1;
var tileWidth = parseInt(doc.width/tilesAcross);
var tileHeight = parseInt(doc.height/tilesDown);
ProcessFiles(tilesDown,tilesAcross,tileWidth,tileHeight);
app.preferences.rulerUnits = startRulerUnits;     
      }
   }
  }
}
main();
function ProcessFiles(Down,Across,offsetX,offsetY){
try{
var newName = activeDocument.name.match(/(.*)\.[^\.]+$/)[1];
}catch(e){var newName="UntitledChop"}
TLX = 0; TLY = 0; TRX = offsetX; TRY = 0;
BRX = offsetX; BRY = offsetY; BLX = 0; BLY = offsetY;
for(var a = 0; a < Down; a++){
  for(var i = 0;i <Across; i++){
   app.activeDocument.duplicate (newName +"#"+a+"-"+i, true);
    activeDocument.selection.select([[TLX,TLY],[TRX,TRY],[BRX,BRY],[BLX,BLY]], SelectionType.REPLACE, 0, false);
    executeAction( charIDToTypeID( "Crop" ), undefined, DialogModes.NO );
    app.activeDocument.selection.deselect();
    activeDocument = documents[0];
TLX = offsetX * (i+1) ; TRX  = TLX + offsetX; BRX = TRX; BLX = TLX; 
    }
TLX = 0; TLY = offsetY * (a +1); TRX = offsetX; TRY = offsetY * (a +1);
BRX = offsetX; BRY = TRY + offsetY; BLX = 0; BLY = (offsetY * (a +1)+offsetY);

}
}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 22, 2010 Mar 22, 2010

Chop-o-matic script is sweet.  I believe that it is 90% of what I need.  Now I only need to figure out how to automate saving each of the windows to a unique file name.  I'll see if I can use the example to also ask for an output directorr, to save as high quality jegs to that directory, and close the window.  Thanks.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Valorous Hero ,
Mar 22, 2010 Mar 22, 2010

I have modified the script and added a checkbox, if ticked it will save and close each new section, save them as jpg with a quality of 12 into a folder off the active documents folder called Chop-O-Matic. If it's a new document that hasn't been saved the folder will be created on the desktop. On completion the new folder will be opened.


#target photoshop
function main(){
var dlg=
"dialog{text:'Script Interface',bounds:[100,100,380,290],"+
"panel0:Panel{bounds:[10,10,270,180] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+
"title:StaticText{bounds:[60,10,220,40] , text:'Chop-o-matic' ,properties:{scrolling:undefined,multiline:undefined}},"+
"panel1:Panel{bounds:[10,40,250,130] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+
"statictext1:StaticText{bounds:[10,10,111,30] , text:'Accross' ,properties:{scrolling:undefined,multiline:undefined}},"+
"statictext2:StaticText{bounds:[140,10,230,27] , text:'Down' ,properties:{scrolling:undefined,multiline:undefined}},"+
"across:DropDownList{bounds:[10,30,100,50]},"+
"down:DropDownList{bounds:[140,30,230,50]},"+
"saveFiles:Checkbox{bounds:[10,60,230,80] , text:'Save and Close new files?'}},"+
"button0:Button{bounds:[10,140,110,160] , text:'Ok' },"+
"button1:Button{bounds:[150,140,250,160] , text:'Cancel' }}};"
var win = new Window(dlg,'Chop-o-matic');
if(version.substr(0,version.indexOf('.'))>9){
win.panel0.title.graphics.font = ScriptUI.newFont("Arial","BOLD",20);
g = win.graphics;
var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [1.00, 1.00, 1.00, 1]);
g.backgroundColor = myBrush;
var myPen =g.newPen (g.PenType.SOLID_COLOR, [1.00, 0.00, 0.00, 1],lineWidth=1);
}
win.center();
  for(var i=1;i<31;i++){
   win.panel0.panel1.across.add ('item', i);    
   win.panel0.panel1.down.add ('item', i);    
  }
win.panel0.panel1.across.selection=0;
win.panel0.panel1.down.selection=0;
var done = false;
    while (!done) {
      var x = win.show();
      if (x == 0 || x == 2) {
        win.canceled = true;
        done = true;
      } else if (x == 1) {
        done = true;
        {
if(!documents.length)return;
var startRulerUnits = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
doc = app.activeDocument;
app.displayDialogs = DialogModes.NO;
var tilesAcross = parseInt(win.panel0.panel1.across.selection.index)+1;
var tilesDown =parseInt(win.panel0.panel1.down.selection.index)+1;
var tileWidth = parseInt(doc.width/tilesAcross);
var tileHeight = parseInt(doc.height/tilesDown);
var SaveFiles = win.panel0.panel1.saveFiles.value;
ProcessFiles(tilesDown,tilesAcross,tileWidth,tileHeight,SaveFiles);
app.preferences.rulerUnits = startRulerUnits;     
      }
   }
  }
}
main();
function ProcessFiles(Down,Across,offsetX,offsetY,SaveFiles){
try{
var newName = activeDocument.name.match(/(.*)\.[^\.]+$/)[1];
}catch(e){var newName="UntitledChop"}
var Path='';
try{
Path =  activeDocument.path;
}catch(e){Path = "~/Desktop";}
if(SaveFiles){
Path = Folder(decodeURI(Path) +"/Chop-O-Matic");
if(!Path.exists) Path.create();
     }
TLX = 0; TLY = 0; TRX = offsetX; TRY = 0;
BRX = offsetX; BRY = offsetY; BLX = 0; BLY = offsetY;
for(var a = 0; a < Down; a++){
  for(var i = 0;i <Across; i++){
            var NewFileName = newName +"#"+a+"-"+i;
   app.activeDocument.duplicate (NewFileName, true);
    activeDocument.selection.select([[TLX,TLY],[TRX,TRY],[BRX,BRY],[BLX,BLY]], SelectionType.REPLACE, 0, false);
    executeAction( charIDToTypeID( "Crop" ), undefined, DialogModes.NO );
    app.activeDocument.selection.deselect();
if(SaveFiles){
var saveFile = File(decodeURI(Path+"/"+NewFileName+".jpg"));
SaveJPEG(saveFile, 12);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
    activeDocument = documents[0];
TLX = offsetX * (i+1) ; TRX  = TLX + offsetX; BRX = TRX; BLX = TLX; 
    }
TLX = 0; TLY = offsetY * (a +1); TRX = offsetX; TRY = offsetY * (a +1);
BRX = offsetX; BRY = TRY + offsetY; BLX = 0; BLY = (offsetY * (a +1)+offsetY);

}
if(SaveFiles){
Path.execute()
    }
}
function SaveJPEG(saveFile, jpegQuality){
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.embedColorProfile = true;
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
jpgSaveOptions.matte = MatteType.NONE;
jpgSaveOptions.quality = jpegQuality;
activeDocument.saveAs(saveFile, jpgSaveOptions, true,Extension.LOWERCASE);
}

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 23, 2010 Mar 23, 2010

This is super sweet.  Thanks Paul.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Feb 18, 2018 Feb 18, 2018

Hi Paul,

I am helping out a facebook group run a raffle online as well as in person.

They have asked me to scan in their raffle books so they can email tickets to people who buy online and also sell physical tickets.

The book is about 100 pages with 5 ticket per page. I think your script will be perfect for the job of doing all the slicing. I'm just wondering - will it work with Photoshop CC 2018?

Thanks in advance for any advice. I'm away for work over the next week so won't have access to my personal computer so may not respond quickly.

Cheers,

Con.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Feb 18, 2018 Feb 18, 2018

Paul Riggott has withdrawn from these Fora, maybe you should start a new thread.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Feb 18, 2018 Feb 18, 2018
LATEST

Ok thanks mate.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines