skip to Main Content
doc = app.activeDocument;  

// these are our values for the END RESULT width and height (in pixels) of our image
var fWidth = 1313;
var fHeight = 1750;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var originalRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PERCENT;
myDocument.resizeCanvas(myDocument.width + 40, myDocument.height + 40, AnchorPosition.MIDDLECENTER)
app.preferences.rulerUnits = originalRulerUnits;
};

// our web export options
var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'test'+doc.name+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

I want to be able to generate 5 images with 5 different sizes with the same script. Is it just as simple as repeating my code multiple times, or do i need to reset some variables in between?

When I try just duplicating my code and changing the output file name and the sizes, it does it but my canvas size doesn’t reset and change based off the current image size. It just keeps getting bigger. Is there anyway to make the canvas size resize based on that current image size?

var sizes = [
{
    width: 1531,
    height: 1948
},
{
    width: 1303,
    height: 1954
},  
{
    width: 1066,
    height: 1909
}
 ];
doc = app.activeDocument;
// looping through all the sizes
for (var i = 0; i < sizes.length; i++)
{
    var cloneDoc = doc.duplicate(); // duplicates current document
    resizeAndSave(sizes[i].width, sizes[i].height); // passes width and height of sizes to function with your code
    cloneDoc.close(SaveOptions.DONOTSAVECHANGES); // closes the clone
    activeDocument = doc; // making sure that foremost document is the original doc
}

function resizeAndSave(fWidth, fHeight)
{
    //your code


// get a reference to the current (active) document and store it in a variable named "doc"




// these are our values for the END RESULT width and height (in pixels) of our image
//var fWidth = 1313;
//var fHeight = 1750;

// do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
activeDocument = doc;
if (doc.height > doc.width) {
    doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
}
else {
    doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
}

// Makes the default background white
var white = new SolidColor(); 
white.rgb.hexValue = "FFFFFF";
app.backgroundColor = white;

// 2012, use it at your own risk;

#target photoshop

if (app.documents.length > 0) {

var myDocument = app.activeDocument;

var originalRulerUnits = app.preferences.rulerUnits;

app.preferences.rulerUnits = Units.PERCENT;

myDocument.resizeCanvas(myDocument.width + 40, myDocument.height + 40, AnchorPosition.MIDDLECENTER)

app.preferences.rulerUnits = originalRulerUnits;

};

// our web export options

var options = new ExportOptionsSaveForWeb();
options.quality = 70;
options.format = SaveDocumentType.JPEG;
options.optimized = true;

var newName = 'test'+doc.name+'.jpg';

doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);

};

2

Answers


  1. Chosen as BEST ANSWER
    doc = app.activeDocument;
    var savedState = app.activeDocument.activeHistoryState
    
    
    
    // get a reference to the current (active) document and store it in a variable named "doc"
    
    
    
    
    // these are our values for the END RESULT width and height (in pixels) of our image
    var fWidth = 1155;
    var fHeight = 1471;
    
    // do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
    activeDocument = doc;
    if (doc.height > doc.width) {
        doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
    }
    else {
        doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
    }
    
    // Makes the default background white
    var white = new SolidColor(); 
    white.rgb.hexValue = "FFFFFF";
    app.backgroundColor = white;
    
    // 2012, use it at your own risk;
    
    #target photoshop
    
    if (app.documents.length > 0) {
    activeDocument = doc;
    var cwidth = 2000;
    var cheight = 2000;
    
    var originalRulerUnits = app.preferences.rulerUnits;
    
    app.preferences.rulerUnits = Units.PIXELS;
    
    doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)
    
    app.preferences.rulerUnits = originalRulerUnits;
    
    };
    
    // our web export options
    
    var options = new ExportOptionsSaveForWeb();
    options.quality = 70;
    options.format = SaveDocumentType.JPEG;
    options.optimized = true
    
    var newName = 'MIR'+doc.name +'-22_28'+'.jpg';
    
    doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);
    
    app.activeDocument.activeHistoryState = savedState
    
    // these are our values for the END RESULT width and height (in pixels) of our image
    var hWidth = 1141;
    var hHeight = 1711;
    
    // do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
    activeDocument = doc;
    if (doc.height > doc.width) {
        doc.resizeImage(null,UnitValue(hHeight,"px"),null,ResampleMethod.BICUBIC);
    }
    else {
        doc.resizeImage(UnitValue(hWidth,"px"),null,null,ResampleMethod.BICUBIC);
    }
    
    // Makes the default background white
    var white = new SolidColor(); 
    white.rgb.hexValue = "FFFFFF";
    app.backgroundColor = white;
    
    // 2012, use it at your own risk;
    
    #target photoshop
    
    if (app.documents.length > 0) {
    activeDocument = doc;
    var cwidth = 2000;
    var cheight = 2000;
    
    var originalRulerUnits = app.preferences.rulerUnits;
    
    app.preferences.rulerUnits = Units.PIXELS;
    
    doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)
    
    app.preferences.rulerUnits = originalRulerUnits;
    
    };
    
    
    
    
    // our web export options
    
    var options = new ExportOptionsSaveForWeb();
    options.quality = 70;
    options.format = SaveDocumentType.JPEG;
    options.optimized = true;
    
    var newName = 'MIR'+doc.name+'-24_36'+'.jpg';
    
    doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);
    
    app.activeDocument.activeHistoryState = savedState
    
    // these are our values for the END RESULT width and height (in pixels) of our image
    var fWidth = 1058;
    var fHeight = 1897;
    
    // do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
    activeDocument = doc;
    if (doc.height > doc.width) {
        doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
    }
    else {
        doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
    }
    
    // Makes the default background white
    var white = new SolidColor(); 
    white.rgb.hexValue = "FFFFFF";
    app.backgroundColor = white;
    
    // 2012, use it at your own risk;
    
    #target photoshop
    
    if (app.documents.length > 0) {
    activeDocument = doc;
    var cwidth = 2000;
    var cheight = 2000;
    
    var originalRulerUnits = app.preferences.rulerUnits;
    
    app.preferences.rulerUnits = Units.PIXELS;
    
    doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)
    
    app.preferences.rulerUnits = originalRulerUnits;
    
    };
    
    // our web export options
    
    var options = new ExportOptionsSaveForWeb();
    options.quality = 70;
    options.format = SaveDocumentType.JPEG;
    options.optimized = true;
    
    var newName = 'MIR'+doc.name+'-24_43'+'.jpg';
    
    doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);
    
    app.activeDocument.activeHistoryState = savedState
    
    // these are our values for the END RESULT width and height (in pixels) of our image
    var fWidth = 1360;
    var fHeight = 1813;
    
    // do the resizing.  if height > width (portrait-mode) resize based on height.  otherwise, resize based on width
    activeDocument = doc;
    if (doc.height > doc.width) {
        doc.resizeImage(null,UnitValue(fHeight,"px"),null,ResampleMethod.BICUBIC);
    }
    else {
        doc.resizeImage(UnitValue(fWidth,"px"),null,null,ResampleMethod.BICUBIC);
    }
    
    // Makes the default background white
    var white = new SolidColor(); 
    white.rgb.hexValue = "FFFFFF";
    app.backgroundColor = white;
    
    // 2012, use it at your own risk;
    
    #target photoshop
    
    if (app.documents.length > 0) {
    activeDocument = doc;
    var cwidth = 2000;
    var cheight = 2000;
    
    var originalRulerUnits = app.preferences.rulerUnits;
    
    app.preferences.rulerUnits = Units.PIXELS;
    
    doc.resizeCanvas(cwidth, cheight, AnchorPosition.MIDDLECENTER)
    
    app.preferences.rulerUnits = originalRulerUnits;
    
    };
    
    // our web export options
    
    var options = new ExportOptionsSaveForWeb();
    options.quality = 70;
    options.format = SaveDocumentType.JPEG;
    options.optimized = true;
    
    var newName = 'MIR'+doc.name+'-30_40'+'.jpg';
    
    doc.exportDocument(File(doc.path+'/'+newName),ExportType.SAVEFORWEB,options);
    
    app.activeDocument.activeHistoryState = savedState
    
    
    
    
    
    
    // get a reference to the current (active) document and store it in a variable named "doc"
    
    

  2. You need to reset or clone your original document in the beginning of the each loop. I prefer cloning so I’d do something like this:

    // creating array of sizes
    var sizes = [
    {
        width: 313,
        height: 750
    },
    {
        width: 413,
        height: 150
    }, ];
    
    // looping through all the sizes
    for (var i = 0; i < sizes.length; i++)
    {
        var cloneDoc = doc.duplicate(); // duplicates current document
        resizeAndSave(sizes[i].width, sizes[i].height); // passes width and height of sizes to function with your code
        cloneDoc.close(SaveOptions.DONOTSAVECHANGES); // closes the clone
        activeDocument = doc; // making sure that foremost document is the original doc
    }
    
    function resizeAndSave(fWidth, fHeight)
    {
        //your code
    };
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search