Answered
Saving in 300dpi Script
Hi everyone. I'am using a script but its saving images in 96dpi. Is tehere any way to save them in 300dpi ?
Thanks.
This is the script :
#target photoshop
if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var theName = myDocument.name.match(/(.*)\.[^\.]+$/)[1];
var thePath = myDocument.path;
var theLayer = myDocument.activeLayer;
// JPG Options;
jpgSaveOptions = new JPEGSaveOptions();
jpgSaveOptions.embedColorProfile = true;
jpgSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
jpgSaveOptions.matte = MatteType.NONE;
jpgSaveOptions.quality = 12;
// Check if layer is SmartObject;
if (theLayer.kind != "LayerKind.SMARTOBJECT") {
alert("selected layer is not a smart object")
} else {
// Select Files;
if ($.os.search(/windows/i) != -1) {
var theFiles = File.openDialog("please select files", "*.psd;*.tif;*.jpg", true)
} else {
var theFiles = File.openDialog("please select files", getFiles, true)
};
if (theFiles) {
for (var m = 0; m < theFiles.length; m++) {
// Replace SmartObject
theLayer = replaceContents(theFiles[m], theLayer);
var theNewName = theFiles[m].name.match(/(.*)\.[^\.]+$/)[1];
// Save JPG. If you have need of saving different artboards into separate files,
// see https://gist.github.com/laryn/0a1f6bf0dab5b713395a835f9bfa805c#gistcomment-3996733
// Export each top layer group (artboards) as a JPG
var destStatics = new Folder(activeDocument.path + '/../assets/static-banners/')
var doc = activeDocument;
if (!destStatics.exists) {
destStatics.create();
}
(function getLayers(el) {
// find layer groups
var today = new Date();
var time = today.getHours() + "-" + today.getMinutes() + "-" + today.getSeconds();
var theNewName = theFiles[m].name.match(/(.*)\.[^\.]+$/)[1];
for (var a = 0; a < el.layerSets.length; a++) {
var lname = el.layerSets[a].name;
var exportName = '';
if (time + lname != 'Null' && lname != 'NULL' && time + lname != 'null') {
var ext = time + lname.substr(-4);
if (ext === '.jpg') {
var exportName = time + lname;
} else if (ext === '.jpg') {
var exportName = time + name.replace('.png', '.jpg')
} else {
var exportName = lname + theNewName + '.jpg'
}
saveLayer(el.layers.getByName(lname), exportName, destStatics, true);
}
}
})(doc)
function saveLayer(layer, lname, path, shouldMerge) {
activeDocument.activeLayer = layer;
dupLayers();
if (shouldMerge === undefined || shouldMerge === true) {
activeDocument.mergeVisibleLayers();
}
activeDocument.trim(TrimType.TRANSPARENT,true,true,true,true);
var saveFile = File(path + "/" + lname);
SaveJPG(saveFile);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
function dupLayers() {
var desc143 = new ActionDescriptor();
var ref73 = new ActionReference();
ref73.putClass( charIDToTypeID('Dcmn') );
desc143.putReference( charIDToTypeID('null'), ref73 );
desc143.putString( charIDToTypeID('Nm '), activeDocument.activeLayer.name );
var ref74 = new ActionReference();
ref74.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
desc143.putReference( charIDToTypeID('Usng'), ref74 );
executeAction( charIDToTypeID('Mk '), desc143, DialogModes.NO );
};
function SaveJPG(saveFile){
var sfwOptions = new ExportOptionsSaveForWeb();
sfwOptions.format = SaveDocumentType.JPEG;
sfwOptions.includeProfile = false;
sfwOptions.interlaced = false;
sfwOptions.optimized = true;
sfwOptions.quality = 100;
activeDocument.exportDocument( saveFile, ExportType.SAVEFORWEB, sfwOptions );
} }
}
}
};
// Get PSDs, TIFs and JPGs from files
function getFiles(theFile) {
if (theFile.name.match(/\.(psd|tif|jpg)$/i) != null || theFile.constructor.name == "Folder") {
return true
};
};
// Replace SmartObject Contents
function replaceContents(newFile, theSO) {
app.activeDocument.activeLayer = theSO;
// =======================================================
var idplacedLayerReplaceContents = stringIDToTypeID("placedLayerReplaceContents");
var desc3 = new ActionDescriptor();
var idnull = charIDToTypeID("null");
desc3.putPath(idnull, new File(newFile));
var idPgNm = charIDToTypeID("PgNm");
desc3.putInteger(idPgNm, 1);
executeAction(idplacedLayerReplaceContents, desc3, DialogModes.NO);
return app.activeDocument.activeLayer
};
