6 Replies Latest reply on Aug 26, 2017 4:41 AM by c.pfaffenbichler

    Slicing a very image (24k px x 34k px) into smaller crops

    Digital ID

      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?

        • 1. Re: Slicing a very image (24k px x 34k px) into smaller crops
          c.pfaffenbichler Level 8

          Any ideas?

          Scripting. But please provide an exact and specific explanations including the pixel dimensions, overlap needs, …

          Photoshop Scripting

          1 person found this helpful
          • 2. Re: Slicing a very image (24k px x 34k px) into smaller crops
            Digital ID Level 1

            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

             

            wall mock.jpg

            • 3. Re: Slicing a very image (24k px x 34k px) into smaller crops
              PECourtejoie Adobe Community Professional

              Hello, how do you intend to print? Some printers can tile automatically a large image on several pages...

              • 5. Re: Slicing a very image (24k px x 34k px) into smaller crops
                norman.sanders Most Valuable Participant

                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.

                comp.jpg

                1 person found this helpful
                • 6. Re: Slicing a very image (24k px x 34k px) into smaller crops
                  c.pfaffenbichler Level 8

                  // 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 );

                  };

                  1 person found this helpful