A while back I believe Pfaffenbichler posted a script that dices up an image onto layers according to guidelines. I use his script in an action that has an interactive New Guide Layout step before the Script step. Its easy to dice up an image that way. Here the script again.
// split Image to layer according to guides;
// 2015, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var myResolution = myDocument.resolution;
var theLayer = myDocument.activeLayer;
var layerID = getLayerId(theLayer);
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.POINTS;
// check guides;
var theVer = new Array;
var theHor = new Array;
var theNumber = myDocument.guides.length;
for (var m = 0; m < theNumber; m++) {
if (myDocument.guides[m].direction == Direction.HORIZONTAL) {theHor.push(myDocument.guides[m].coordinate)};
if (myDocument.guides[m].direction == Direction.VERTICAL) {theVer.push(myDocument.guides[m].coordinate)};
};
// sort and add beginning and end;
theHor = treatGuideArray (theHor, app.activeDocument.height);
theVer = treatGuideArray (theVer, app.activeDocument.width);
$.writeln(theHor.join("\n")+"\n\n\n"+theVer.join("\n"));
// create selections;
for (var y = 0; y < theHor.length - 1; y++) {
var Y1 = theHor[y];
var Y2 = theHor[y+1];
for (var x = 0; x < theVer.length - 1; x++) {
try {
var X1 = theVer[x];
var X2 = theVer[x+1];
rectangularSelection([Y1, X1, Y2, X2], false);
// layer via copy;
var id14 = charIDToTypeID( "CpTL" );
executeAction( id14, undefined, DialogModes.NO );
// add mask;
intersectedLayerMask (layerID)
} catch (e) {};
// reselct layer;
myDocument.activeLayer = theLayer;
};
};
activeDocument.selection.deselect();
// reset the ruler units;
app.preferences.rulerUnits = originalRulerUnits
};
////////////////// the functions //////////////////
////// treat array //////
function treatGuideArray (theArray, theExtreme) {
theArray.sort(function(a,b){return a - b});
if (Number (theArray[theArray.length - 1]) != theExtreme) {theArray.push(theExtreme)};
if (Number (theArray[0]) != 0) {theArray.unshift(new UnitValue(0, "pt"))};
theArray.sort(function(a,b){return a - b});
return theArray;
};
////// rectangular selection //////
function rectangularSelection (theBounds, add) {
// =======================================================
if (add == false || add == undefined) {var idsetd = charIDToTypeID( "setd" )}
else {var idsetd = charIDToTypeID( "AddT" )};
var desc55 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref11 = new ActionReference();
var idChnl = charIDToTypeID( "Chnl" );
var idfsel = charIDToTypeID( "fsel" );
ref11.putProperty( idChnl, idfsel );
desc55.putReference( idnull, ref11 );
var idT = charIDToTypeID( "T " );
var desc56 = new ActionDescriptor();
var idTop = charIDToTypeID( "Top " );
var idRlt = charIDToTypeID( "#Rlt" );
desc56.putUnitDouble( idTop, idRlt, theBounds[0] );
var idLeft = charIDToTypeID( "Left" );
var idRlt = charIDToTypeID( "#Rlt" );
desc56.putUnitDouble( idLeft, idRlt, theBounds[1] );
var idBtom = charIDToTypeID( "Btom" );
var idRlt = charIDToTypeID( "#Rlt" );
desc56.putUnitDouble( idBtom, idRlt, theBounds[2] );
var idRght = charIDToTypeID( "Rght" );
var idRlt = charIDToTypeID( "#Rlt" );
desc56.putUnitDouble( idRght, idRlt, theBounds[3] );
var idRctn = charIDToTypeID( "Rctn" );
desc55.putObject( idT, idRctn, desc56 );
executeAction( idsetd, desc55, DialogModes.NO );
};
// by mike hale, via paul riggott;
function getLayerId(theLayer){
// http://forums.adobe.com/message/1944754#1944754
app.activeDocument.activeLayer = theLayer;
//Assumes activeDocument and activeLayer
var ref = new ActionReference();
ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
d = executeActionGet(ref);
return d.getInteger(charIDToTypeID('LyrI'));
};
////// load transparency, ontersect with layer mask ofd another layer, add layer mask //////
function intersectedLayerMask (layerID) {
var idChnl = charIDToTypeID( "Chnl" );
// =======================================================
var idsetd = charIDToTypeID( "setd" );
var desc2 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref1 = new ActionReference();
var idfsel = charIDToTypeID( "fsel" );
ref1.putProperty( idChnl, idfsel );
desc2.putReference( idnull, ref1 );
var idT = charIDToTypeID( "T " );
var ref2 = new ActionReference();
var idTrsp = charIDToTypeID( "Trsp" );
ref2.putEnumerated( idChnl, idChnl, idTrsp );
desc2.putReference( idT, ref2 );
executeAction( idsetd, desc2, DialogModes.NO );
// =======================================================
var idIntr = charIDToTypeID( "Intr" );
var desc3 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref3 = new ActionReference();
var idMsk = charIDToTypeID( "Msk " );
ref3.putEnumerated( idChnl, idChnl, idMsk );
var idLyr = charIDToTypeID( "Lyr " );
ref3.putIdentifier( idLyr, layerID );
desc3.putReference( idnull, ref3 );
var idWith = charIDToTypeID( "With" );
var ref4 = new ActionReference();
var idfsel = charIDToTypeID( "fsel" );
ref4.putProperty( idChnl, idfsel );
desc3.putReference( idWith, ref4 );
executeAction( idIntr, desc3, DialogModes.NO );
// =======================================================
var idMk = charIDToTypeID( "Mk " );
var desc4 = new ActionDescriptor();
var idNw = charIDToTypeID( "Nw " );
desc4.putClass( idNw, idChnl );
var idAt = charIDToTypeID( "At " );
var ref5 = new ActionReference();
var idMsk = charIDToTypeID( "Msk " );
ref5.putEnumerated( idChnl, idChnl, idMsk );
desc4.putReference( idAt, ref5 );
var idUsng = charIDToTypeID( "Usng" );
var idUsrM = charIDToTypeID( "UsrM" );
var idRvlS = charIDToTypeID( "RvlS" );
desc4.putEnumerated( idUsng, idUsrM, idRvlS );
executeAction( idMk, desc4, DialogModes.NO );
};
Here is what my Action look like.

