Copy link to clipboard
Copied
I need to slices a very large piece of artwork into 117 smaller crops to then reassemble as an art installation.
I thought I could use the slice tool to cut the artwork into several smaller exports but there doesn't seem to be an option, maybe because its a .PSB large format file
I need to be able to export as a print ready file
Any ideas?
Copy link to clipboard
Copied
Any ideas?
Scripting. But please provide an exact and specific explanations including the pixel dimensions, overlap needs, …
Copy link to clipboard
Copied
It's 2376mm x 2886mm at 300dpi. Needs to be split into (117) 264mm x 222mm print ready JPGs. I currently have it in PSB format
There is no need for overlap for bleed, they're being mounted together but not edge to edge so I'm happy to sacrifice the bleed. The individual mounts are set to different angles so edges wont meet.
This is a 3d mock of the final piece
Copy link to clipboard
Copied
How many rows and lines?
Copy link to clipboard
Copied
Hello, how do you intend to print? Some printers can tile automatically a large image on several pages...
Copy link to clipboard
Copied
The sample below consists of 99 (9x11) squares but a 9x13 grid (total 117) in your dimensions would handled in a similar fashion:
Guides dragged out from the top and side rulers. View > Snap to Guides. Rectangular Marquee tool. Separate layer for each fragment,
The sample below shows some of the images in the grid. Added the final image, with the original image ghosted, for clarity.
Copy link to clipboard
Copied
// split image into x times y segments and save them as jpgs;
// 2017, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
var originalUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
// document;
var myDocument = app.activeDocument;
var theName= myDocument.name.match(/(.*)\.[^\.]+$/)[1];
var thePath = myDocument.path;
var theCopy = myDocument.duplicate("copy", true);
// the numbers;
var theX = 9;
var theY = 13;
var xFrac = myDocument.width/theX;
var yFrac = myDocument.height/theY;
// psd options;
psdOpts = new PhotoshopSaveOptions();
psdOpts.embedColorProfile = true;
psdOpts.alphaChannels = true;
psdOpts.layers = true;
psdOpts.spotColors = true;
// jpg options;
var jpegOptions = new JPEGSaveOptions();
jpegOptions.quality = 9;
jpegOptions.embedColorProfile = true;
jpegOptions.matte = MatteType.NONE;
// create folder;
var folderName = thePath+"/"+theName+"_"+theX+"x"+theY;
if (Folder(folderName).exists == false) {Folder(folderName).create()};
//save jpgs;
for (var n = 1; n <= theY; n++) {
for (var m = 1; m <= theX; m++) {
cropTo((m-1)*xFrac, (n-1)*yFrac, m*xFrac, n*yFrac);
var theNewName = theName+"_"+bufferNumberWithZeros(m, 3)+"_"+bufferNumberWithZeros(n, 3);
theCopy.saveAs((new File(folderName+"/"+"_"+theNewName+".jpg")),jpegOptions,true);
theCopy.activeHistoryState = theCopy.historyStates[0];
//executeAction( charIDToTypeID("undo"), undefined, DialogModes.NO );
}
};
theCopy.close(SaveOptions.DONOTSAVECHANGES);
// reset;
app.preferences.rulerUnits = originalUnits;
};
////// buffer number with zeros //////
function bufferNumberWithZeros (number, places) {
var theNumberString = String(number);
for (var o = 0; o < (places - String(number).length); o++) {
theNumberString = String("0" + theNumberString)
};
return theNumberString
};
////// crop //////
function cropTo (x1, y1, x2, y2) {
// =======================================================
var desc7 = new ActionDescriptor();
var desc8 = new ActionDescriptor();
var idPxl = charIDToTypeID( "#Pxl" );
desc8.putUnitDouble( charIDToTypeID( "Top " ), idPxl, y1 );
desc8.putUnitDouble( charIDToTypeID( "Left" ), idPxl, x1);
desc8.putUnitDouble( charIDToTypeID( "Btom" ), idPxl, y2 );
desc8.putUnitDouble( charIDToTypeID( "Rght" ), idPxl, x2 );
var idRctn = charIDToTypeID( "Rctn" );
desc7.putObject( charIDToTypeID( "T " ), idRctn, desc8 );
desc7.putUnitDouble( charIDToTypeID( "Angl" ), charIDToTypeID( "#Ang" ), 0.000000 );
desc7.putBoolean( charIDToTypeID( "Dlt " ), false );
desc7.putEnumerated( stringIDToTypeID( "cropAspectRatioModeKey" ), stringIDToTypeID( "cropAspectRatioModeClass" ), stringIDToTypeID( "pureAspectRatio" ) );
desc7.putBoolean( charIDToTypeID( "CnsP" ), false );
executeAction( charIDToTypeID( "Crop" ), desc7, DialogModes.NO );
};
Copy link to clipboard
Copied
Modertator, add Actions and Scripting label to this thread.
Copy link to clipboard
Copied
"Moderator, add Actions and Scripting label to this thread."
Done 🙂