Last active
October 9, 2020 19:52
-
-
Save pdalfarr/10271735 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Output Android Assets.jsx | |
// 2012 Jacopo Labardi www.facebook.com/jacopo.labardi | |
// License: none (public domain) | |
// v1.1 | |
// | |
// The Original script is made by Todd Linkner, but I found it quite buggy | |
// I modified it to correct some bugs | |
// | |
// This scrip is for Photoshop CS6 only (32 & 64bit). | |
// It outputs Android XHDPI, HDPI, MDPI, and LDPI PNG assets | |
// from XHDPI source files in psd or png format. | |
// The resulting PNGs will be placed in sub-folders within your target folder. | |
// My XHDPI all screen format is: 720x1280 320ppi | |
/* | |
// BEGIN__HARVEST_EXCEPTION_ZSTRING | |
<javascriptresource> | |
<name>$$$/JavaScripts/OutputAndroidAssets/MenuAlt=Output Android Assets</name> | |
<category>mobile</category> | |
</javascriptresource> | |
// END__HARVEST_EXCEPTION_ZSTRING | |
*/ | |
// open Photoshop | |
#target "photoshop" | |
main(); | |
function main() { | |
// Ask user for source deletion | |
var cleanup = confirm("This script outputs Android \r\r" | |
+ " -> XXHDPI, XXXHDPI, XHDPI, XHDPI, HDPI, TVDPI, MDPI, and LDPI <-\r\r" | |
+ "PNG assets from XHDPI source files.\r\r" | |
+ "Do you want to delete your original files when complete?"); | |
if (cleanup) { | |
var cleanup2 = confirm("Are you REALLY sure you want to delete" | |
+ "your .PSD SOURCE files?"); } | |
// Ask user which format for source files | |
var sformat = confirm("which is the extension of the source files? \r\r" | |
+"Yes = psd\r" | |
+"No = png") | |
// Ask user for input folder | |
var inputFolder = Folder.selectDialog("Select a folder to process"); | |
if (inputFolder == null) { | |
alert ("No folder selected. Exting script.","Error!"); | |
return (0); | |
} | |
// get all PSD files in the input folder | |
if (sformat) var fileList = inputFolder.getFiles("*.psd"); | |
else var fileList = inputFolder.getFiles("*.png") | |
// Make output folders | |
var dirxxxhdpi = Folder(inputFolder+"/drawable-xxxhdpi"); | |
if(!dirxxxhdpi.exists) dirxxxhdpi.create(); | |
var dirxxhdpi = Folder(inputFolder+"/drawable-xxhdpi"); | |
if(!dirxxhdpi.exists) dirxxhdpi.create(); | |
var dirxhdpi = Folder(inputFolder+"/drawable-xhdpi"); | |
if(!dirxhdpi.exists) dirxhdpi.create(); | |
var dirhdpi = Folder(inputFolder+"/drawable-hdpi"); | |
if(!dirhdpi.exists) dirhdpi.create(); | |
var dirtvdpi = Folder(inputFolder+"/drawable-tvdpi"); | |
if(!dirtvdpi.exists) dirtvdpi.create(); | |
var dirmdpi = Folder(inputFolder+"/drawable-mdpi"); | |
if(!dirmdpi.exists) dirmdpi.create(); | |
var dirldpi = Folder(inputFolder+"/drawable-ldpi"); | |
if(!dirldpi.exists) dirldpi.create(); | |
// ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi | |
// 0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4 | |
// Open each file in turn | |
for (var i = 0; i < fileList.length; i++) { | |
// Open file | |
open(fileList[i]); | |
// Make XXXHDPI | |
resize(dirxxxhdpi); | |
// Make XXHDPI | |
resize(dirxxhdpi, '75%'); | |
// Make XHDPI | |
resize(dirxhdpi, '50%'); | |
// Make HDPI | |
resize(dirhdpi,'37.5%'); | |
// Make TVDPI | |
resize(dirtvdpi,'33.25%'); | |
// Make MDPI | |
resize(dirmdpi,'25%'); | |
// Make LDPI | |
resize(dirldpi,'18.75%'); | |
// Close and do not save | |
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); | |
// Delete the original if required | |
if (cleanup2) fileList[i].remove(); | |
} | |
alert("Job Done!","Success"); | |
} | |
function resize(dir,percent) { | |
var ShowExtension = "n"; | |
// Setup file name | |
var fname = app.activeDocument.name.replace(/\s+/g, '_').replace(/([a-z\d])([A-Z])/g, '$1_$2').toLowerCase(); | |
di=(fname).indexOf("."); | |
fname2 = (fname).substr(0, di); | |
//use extension if set | |
if ( ShowExtension == "y" ) | |
{ | |
fname2 = fname | |
} | |
// Set export options | |
var opts, file; | |
opts = new ExportOptionsSaveForWeb(); | |
opts.format = SaveDocumentType.PNG | |
opts.transparency = true; | |
opts.blur = 0.0 | |
opts.interlaced = false; | |
opts.optimized = true; | |
opts.includeProfile = false; | |
opts.quality = 100 | |
opts.PNG8 = false; | |
// Duplicate, resize and export | |
var tempfile = app.activeDocument.duplicate(); | |
if (percent != undefined) tempfile.resizeImage(percent,percent); | |
file = new File(dir+"/"+fname2+".png"); | |
tempfile.exportDocument(file, ExportType.SAVEFORWEB, opts); | |
tempfile.close(SaveOptions.DONOTSAVECHANGES); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment