I'm trying to batch files from different folders. My question is, can Save for Web and Devices change the directory path to correspond to the file being batched automatically? How can I do this?
Photoshop question on Save for Web and Devices...
Collapse
X
-
nah usually it will just save to whatever folder you originally set the action for. At least that is what I have experienced. If anyone does know a way to batch out to specific folders I would love to know about it also. Save a lot of time.
My best guess for a workaround would be to have a folder that just says "finished" or something and move the pictures after you have finished a set folder.Comment
-
continues in next post for GFY's max characters allowed...Code:/* <javascriptresource> <name>Batch Save for Web</name> <type>automate</type> <about>Author Paul Riggott</about> <category>aaaThisPutsMeAtTheTopOfTheMenu</category> </javascriptresource> */ function main(){ var dlg = "dialog{text:'Script Interface',bounds:[100,100,640,470],"+ "panel0:Panel{bounds:[10,10,530,360] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+ "title:StaticText{bounds:[90,20,470,50] , text:'CS2-CS3 Batch Save For Web' ,properties:{scrolling:undefined,multiline:undefined}},"+ "panel1:Panel{bounds:[10,60,510,190] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+ "Bridge:Checkbox{bounds:[10,10,250,30] , text:'Use Selected Bridge Files' },"+ "statictext1:StaticText{bounds:[10,40,120,60] , text:'Select Input Folder' ,properties:{scrolling:undefined,multiline:undefined}},"+ "Folder1:EditText{bounds:[140,40,390,60] , text:'' ,properties:{multiline:false,noecho:false,readonly:false}},"+ "Browse1:Button{bounds:[400,40,491,60] , text:'Browse' },"+ "statictext2:StaticText{bounds:[10,100,130,120] , text:'Select Output Folder' ,properties:{scrolling:undefined,multiline:undefined}},"+ "Folder2:EditText{bounds:[140,100,390,120] , text:'' ,properties:{multiline:false,noecho:false,readonly:false}},"+ "Browse2:Button{bounds:[400,100,491,120] , text:'Browse' },"+ "statictext4:StaticText{bounds:[10,70,111,90] , text:'Select File Type' ,properties:{scrolling:undefined,multiline:undefined}},"+ "fileType:DropDownList{bounds:[140,70,230,90]},"+ "statictext5:StaticText{bounds:[260,70,390,90] , text:'Select Output Quality' ,properties:{scrolling:undefined,multiline:undefined}},"+ "qual:DropDownList{bounds:[400,70,486,90]}},"+ "panel2:Panel{bounds:[10,200,510,290] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+ "ResizeCheck:Checkbox{bounds:[10,10,149,31] , text:'Resize To Fit' },"+ "WW:StaticText{bounds:[150,10,180,30] , text:'W:' ,properties:{scrolling:undefined,multiline:undefined}},"+ "Width:EditText{bounds:[180,10,230,30] , text:'' ,properties:{multiline:false,noecho:false,readonly:false}},"+ "PX1:StaticText{bounds:[230,10,260,30] , text:'px' ,properties:{scrolling:undefined,multiline:undefined}},"+ "HH:StaticText{bounds:[360,10,390,30] , text:'H:' ,properties:{scrolling:undefined,multiline:undefined}},"+ "Height:EditText{bounds:[390,10,440,30] , text:'' ,properties:{multiline:false,noecho:false,readonly:false}},"+ "PX2:StaticText{bounds:[440,10,470,30] , text:'px' ,properties:{scrolling:undefined,multiline:undefined}},"+ "Action:Checkbox{bounds:[10,60,119,81] , text:'Run Action' },"+ "ActionSet:DropDownList{bounds:[120,60,300,80]},"+ "ActionName:DropDownList{bounds:[310,60,490,80]}},"+ "panel3:Panel{bounds:[10,300,510,340] , text:'' ,properties:{borderStyle:'etched',su1PanelCoordinates:true},"+ "button2:Button{bounds:[10,10,240,31] , text:'Ok' },"+ "button3:Button{bounds:[260,10,490,31] , text:'Cancel' }}}}"; var win = new Window(dlg,"SFW Batch Processor"); win.center(); if(version.substr(0,version.indexOf('.'))>9){ win.panel0.title.graphics.font = ScriptUI.newFont("Times","BOLDITALIC",26); g = win.graphics; b=win.panel0.title.graphics; var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [0.99, 0.99, 0.20, 1]); g.backgroundColor = myBrush; var myPen =b.newPen (g.PenType.SOLID_COLOR, [0.00, 0.00, 0.99, 1],lineWidth=1); var myPen2 =b.newPen (g.PenType.SOLID_COLOR, [0.99, 0.00, 0.00, 1],lineWidth=1); g.foregroundColor = myPen; b.foregroundColor = myPen2; } win.panel0.panel1.Folder1.enabled=false; win.panel0.panel1.Folder2.enabled=false; var FileExtensions = "ALL,PSD,PDD,JPEG,JPG,JPE,GIF,BMP,RLE,DIB,TIF,CRW,NEF,RAF,ORF,CIN,DPX,EPS,PS,FLM,PSB,EXR,PCX,PDP," + "PCD,RAW,PICT,PCT,PIC,PXR,PNG,TGA,VDA,ICB,VST,TIF,TIFF,WBM,DNG,SCT,PBM,CRW,CR2,DC2,DCR,NEF,MRW,X3F"; FileExtensions= FileExtensions.toUpperCase(); FileExtensions = FileExtensions.split(","); FileExtensions= ReturnUniqueSortedList(FileExtensions); for (i in FileExtensions) { win.panel0.panel1.fileType.add('item',FileExtensions[i]); } win.panel0.panel1.fileType.selection=0; for(var a = 0;a <101;a++){ win.panel0.panel1.qual.add('item',a); } win.panel0.panel1.qual.selection=80; win.panel0.panel2.ResizeCheck.onClick = function() { var realValue = win.panel0.panel2.ResizeCheck.value; win.panel0.panel2.Width.enabled = realValue; win.panel0.panel2.WW.enabled = realValue; win.panel0.panel2.PX1.enabled = realValue; win.panel0.panel2.Height.enabled = realValue; win.panel0.panel2.HH.enabled = realValue; win.panel0.panel2.PX2.enabled = realValue; }; win.panel0.panel2.ResizeCheck.onClick(); win.panel0.panel2.Action.onClick = function() { var RealValue = win.panel0.panel2.Action.value; var resizeValue = win.panel0.panel2.ResizeCheck.value; win.panel0.panel2.ActionSet.enabled = RealValue; win.panel0.panel2.ActionName.enabled = RealValue; }; win.panel0.panel1.Bridge.onClick =function(){ if(win.panel0.panel1.Bridge.value){ win.panel0.panel1.Folder1.text =''; win.panel0.panel1.fileType.enabled=false; win.panel0.panel1.Browse1.enabled=false; }else{ win.panel0.panel1.fileType.enabled=true; win.panel0.panel1.Browse1.enabled=true; } } win.panel0.panel2.Action.onClick(); var actionSets = new Array(); actionSets = getActionSets(); for (var i=0,len=actionSets.length;i<len;i++) { item = win.panel0.panel2.ActionSet.add ('item', "" + actionSets[i]); }; win.panel0.panel2.ActionSet.selection=0; var actions = new Array(); actions = getActions(actionSets[0]); for (var i=0,len=actions.length;i<len;i++) { item = win.panel0.panel2.ActionName.add ('item', "" + actions[i]); }; win.panel0.panel2.ActionName.selection=0; win.panel0.panel2.ActionSet.onChange = function() { win.panel0.panel2.ActionName.removeAll(); actions = getActions(actionSets[parseInt(this.selection)]); for (var i=0,len=actions.length;i<len;i++) { item = win.panel0.panel2.ActionName.add ('item', "" + actions[i]); } win.panel0.panel2.ActionName.selection=0; }; win.panel0.panel1.Browse1.onClick = function() { if(!win.panel0.panel1.Bridge.value){ inputFolder = Folder.selectDialog("Please select the folder with Files to process",existFolder1); if(inputFolder !=null){ existFolder1 = inputFolder; win.panel0.panel1.Folder1.text = decodeURI(inputFolder.fsName); } } } win.panel0.panel1.Browse2.onClick = function() { outputFolder = Folder.selectDialog("Please select the output folder",existFolder2); if(outputFolder !=null){ existFolder2 = outputFolder; win.panel0.panel1.Folder2.text = decodeURI(outputFolder.fsName); } } var done = false; while (!done) { var x = win.show(); if (x == 0 || x == 2) { win.canceled = true; //Cancelled done = true; } else if (x == 1) { done = true; var result = valiDate(); if(result != true) { alert(result); return; }else { ProcessFolder(); } } } function valiDate(){ if(inputFolder != '' && outputFolder != ''){ Ini.open("w"); Ini.writeln(inputFolder); Ini.writeln(outputFolder); Ini.close(); } if(!win.panel0.panel1.Bridge.value){ if(win.panel0.panel1.Folder1.text == '') return 'No Source Folder selected'; if(win.panel0.panel1.Folder1.text == win.panel0.panel1.Folder2.text) return "Sorry input/output must be a different Folder"; } if(win.panel0.panel1.Bridge.value){ Ini.open("w"); Ini.writeln(existFolder1); Ini.writeln(outputFolder); Ini.close(); } if(win.panel0.panel1.Folder2.text == '') return 'No Output Folder selected'; if(win.panel0.panel2.ResizeCheck.value){ var WIDTH = parseInt(win.panel0.panel2.Width.text); var HEIGHT= parseInt(win.panel0.panel2.Height.text); if((isNaN(WIDTH)) || (WIDTH < 1)) return "Not a valid entry!\nResize Width MUST be greater than 1."; if((isNaN(HEIGHT)) || (HEIGHT < 1)) return "Not a valid entry!\nResize Height MUST be greater than 1."; } return true; } function ProcessFolder(){ app.displayDialogs = DialogModes.NO; var strtRulerUnits = app.preferences.rulerUnits; var strtTypeUnits = app.preferences.typeUnits; app.preferences.rulerUnits = Units.PIXELS; app.preferences.typeUnits = TypeUnits.PIXELS; if(!win.panel0.panel1.Bridge.value){ if(win.panel0.panel1.fileType.selection.text == 'ALL'){ var fileList = inputFolder.getFiles(/\.(jpg|jpe|jpeg|gif|eps|dng|bmp|tif|tiff|psd|crw|cr2|rle|dib|cin|dpx|ps|pcd|pict|vda|icb|vst|wbm|sct|pbm|flm|psb|exr|pcx|pdp|nef|dcr|dc2|erf|raf|orf|tga|mrw|mos|srf|pic|pct|pxr|pdd|pef|png|x3f|raw)$/i); }else{ var str = "\\."+win.panel0.panel1.fileType.selection.text.toLowerCase()+"$"; var fileMask = new RegExp(str, "i"); var fileList = inputFolder.getFiles(fileMask); }}This post is endorsed by CIA, KGB, MI6, the Mafia, Illuminati, Kim Jong Il, Worldwide Ninjas Association, Klingon Empire and lolcats. Don't mess around with it, just accept it and embrace the truthComment
-
now join both code parts, save it with any name you want and extension .jsx and place it in your scripts folder, usually C:/Program Files/Adobe/Adobe Photoshop CS2/Presets/Scripts/ (or CS3 if you use CS3, I'm poor and legitCode:if(win.panel0.panel1.Bridge.value) var fileList= GetFilesFromBridge(); for(var a =0;a<fileList.length;a++){ file = fileList[a]; if(file instanceof File) { open(file); var FileName = file.name.split('.'); var Filename = new File(decodeURI(outputFolder) + "/" + FileName[0] + ".jpg"); var testFile = new File(decodeURI(outputFolder) + "/" + FileName[0] + ".jpg"); var doc = activeDocument; if(win.panel0.panel2.ResizeCheck.value) FitImage( parseInt(win.panel0.panel2.Width.text), parseInt(win.panel0.panel2.Height.text) ); if(win.panel0.panel2.Action.value) doAction(win.panel0.panel2.ActionName.selection.text, win.panel0.panel2.ActionSet.selection.text); if(Filename.exists) testFile.rename(testFile.name.slice(0,-4) + time() + ".jpg"); SaveForWeb(Filename,parseInt(win.panel0.panel1.qual.selection)); app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); } } app.preferences.rulerUnits = strtRulerUnits; app.preferences.typeUnits = strtTypeUnits; } } if(version.substr(0,version.indexOf('.'))>8 && version.substr(0,version.indexOf('.'))<11){ var Ini = new File(app.preferencesFolder +"/SFW.ini"); if(!Ini.exists){ Ini.open("w"); Ini.writeln(""); Ini.writeln(""); Ini.close(); var existFolder1 = ''; var existFolder2 = ''; }else{ Ini.open("r"); var existFolder1 = Ini.readln(); var existFolder2 = Ini.readln(); Ini.close(); } var inputFolder = ''; var outputFolder = ''; main(); }else{ alert("Sorry this is for PhotoShop CS2 and CS3 Only"); } function getActionSets() { cTID = function(s) { return app.charIDToTypeID(s); }; var i = 1; var sets = []; while (true) { var ref = new ActionReference(); ref.putIndex(cTID("ASet"), i); var desc; var lvl = $.level; $.level = 0; try { desc = executeActionGet(ref); } catch (e) { break; } finally { $.level = lvl; } if (desc.hasKey(cTID("Nm "))) { var set = {}; set.index = i; set.name = desc.getString(cTID("Nm ")); set.toString = function() { return this.name; }; set.count = desc.getInteger(cTID("NmbC")); set.actions = []; for (var j = 1; j <= set.count; j++) { var ref = new ActionReference(); ref.putIndex(cTID('Actn'), j); ref.putIndex(cTID('ASet'), set.index); var adesc = executeActionGet(ref); var actName = adesc.getString(cTID('Nm ')); set.actions.push(actName); } sets.push(set); } i++; } return sets; }; function getActions(aset) { cTID = function(s) { return app.charIDToTypeID(s); }; var i = 1; var names = []; if (!aset) { throw "Action set must be specified"; } while (true) { var ref = new ActionReference(); ref.putIndex(cTID("ASet"), i); var desc; try { desc = executeActionGet(ref); } catch (e) { break; } if (desc.hasKey(cTID("Nm "))) { var name = desc.getString(cTID("Nm ")); if (name == aset) { var count = desc.getInteger(cTID("NmbC")); var names = []; for (var j = 1; j <= count; j++) { var ref = new ActionReference(); ref.putIndex(cTID('Actn'), j); ref.putIndex(cTID('ASet'), i); var adesc = executeActionGet(ref); var actName = adesc.getString(cTID('Nm ')); names.push(actName); } break; } } i++; } return names; }; function FitImage( inWidth, inHeight ) { var desc = new ActionDescriptor(); var unitPixels = charIDToTypeID( '#Pxl' ); desc.putUnitDouble( charIDToTypeID( 'Wdth' ), unitPixels, inWidth ); desc.putUnitDouble( charIDToTypeID( 'Hght' ), unitPixels, inHeight ); var runtimeEventID = stringIDToTypeID( "3caa3434-cb67-11d1-bc43-0060b0a13dc4" ); executeAction( runtimeEventID, desc, DialogModes.NO ); } function ReturnUniqueSortedList(ArrayName){ var unduped = new Object; for (var i = 0; i < ArrayName.length; i++) { unduped[ArrayName[i]] = ArrayName[i]; } var uniques = new Array;for (var k in unduped) { uniques.push(unduped[k]); } uniques.sort(); return uniques; } function SaveForWeb(saveFile,jpegQuality) { var sfwOptions = new ExportOptionsSaveForWeb(); sfwOptions.format = SaveDocumentType.JPEG; sfwOptions.includeProfile = false; sfwOptions.interlaced = 0; sfwOptions.optimized = true; sfwOptions.quality = jpegQuality; activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, sfwOptions); } function time(){ var date = new Date(); var d = date.getDate(); var day = (d < 10) ? '0' + d : d; var m = date.getMonth() + 1; var month = (m < 10) ? '0' + m : m; var yy = date.getYear(); var year = (yy < 1000) ? yy + 1900 : yy; var digital = new Date(); var hours = digital.getHours(); var minutes = digital.getMinutes(); var seconds = digital.getSeconds(); var amOrPm = "AM"; if (hours > 11) amOrPm = "PM"; if (hours > 12) hours = hours - 12; if (hours == 0) hours = 12; if (minutes <= 9) minutes = "0" + minutes; if (seconds <= 9) seconds = "0" + seconds; todaysDate = "-" + hours + "_" + minutes + "_" + seconds + amOrPm; return todaysDate.toString(); }; function GetFilesFromBridge() { var fileList; if ( BridgeTalk.isRunning( "bridge" ) ) { var bt = new BridgeTalk(); bt.target = "bridge"; bt.body = "var theFiles = photoshop.getBridgeFileListForAutomateCommand();theFiles.toSource();"; bt.onResult = function( inBT ) { fileList = eval( inBT.body ); } bt.onError = function( inBT ) { fileList = new Array(); } bt.send(); bt.pump(); $.sleep( 100 ); var timeOutAt = ( new Date() ).getTime() + 5000; var currentTime = ( new Date() ).getTime(); while ( ( currentTime < timeOutAt ) && ( undefined == fileList ) ) { bt.pump(); $.sleep( 100 ); currentTime = ( new Date() ).getTime(); } } if ( undefined == fileList ) { fileList = new Array(); } return fileList; }
)
This post is endorsed by CIA, KGB, MI6, the Mafia, Illuminati, Kim Jong Il, Worldwide Ninjas Association, Klingon Empire and lolcats. Don't mess around with it, just accept it and embrace the truthComment
-
i don't think u can.. I own/run retouching-on-the.net and I will ask some people on there.. because there are some really good photoshop people.
but let me make sure I have this correct
you have pics in
directory a
directory a
directory a
and then use action and then save it for a web.. and save it as
directory x
directory y
directory zComment
-
of course you can. the code I posted will save it in the same folder the input comes from (That's what I understand he wants). If he wants them to another folder, then he has to edit the code like this:i don't think u can.. I own/run retouching-on-the.net and I will ask some people on there.. because there are some really good photoshop people.
but let me make sure I have this correct
you have pics in
directory a
directory a
directory a
and then use action and then save it for a web.. and save it as
directory x
directory y
directory z
locate this at the beginning of code
Code:var FileName = file.name.split('.'); var Filename = new File(decodeURI(outputFolder) + "/" + FileName[0] + ".jpg"); var testFile = new File(decodeURI(outputFolder) + "/" + FileName[0] + ".jpg"); var doc = activeDocument; if(win.panel0.panel2.ResizeCheck.value) FitImage( parseInt(win.panel0.panel2.Width.text), parseInt(win.panel0.panel2.Height.text) ); if(win.panel0.panel2.Action.value) doAction(win.panel0.panel2.ActionName.selection.text, win.panel0.panel2.ActionSet.selection.text); if(Filename.exists) testFile.rename(testFile.name.slice(0,-4) + time() + ".jpg"); SaveForWeb(Filename,parseInt(win.panel0.panel1.qual.selection)); app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
change to this:
and now images from folderA will be saved to b-folderA, folderB to b-folderB and so onCode:var FileName = file.name.split('.'); var Filename = new File(decodeURI(outputFolder) + "/b-" + FileName[0] + ".jpg"); var testFile = new File(decodeURI(outputFolder) + "/b-" + FileName[0] + ".jpg"); var doc = activeDocument; if(win.panel0.panel2.ResizeCheck.value) FitImage( parseInt(win.panel0.panel2.Width.text), parseInt(win.panel0.panel2.Height.text) ); if(win.panel0.panel2.Action.value) doAction(win.panel0.panel2.ActionName.selection.text, win.panel0.panel2.ActionSet.selection.text); if(Filename.exists) testFile.rename(testFile.name.slice(0,-4) + time() + ".jpg"); SaveForWeb(Filename,parseInt(win.panel0.panel1.qual.selection)); app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
This post is endorsed by CIA, KGB, MI6, the Mafia, Illuminati, Kim Jong Il, Worldwide Ninjas Association, Klingon Empire and lolcats. Don't mess around with it, just accept it and embrace the truthComment
-
I have pics as such:i don't think u can.. I own/run retouching-on-the.net and I will ask some people on there.. because there are some really good photoshop people.
but let me make sure I have this correct
you have pics in
directory a
directory a
directory a
and then use action and then save it for a web.. and save it as
directory x
directory y
directory z
01/pics/1.jpg
02/pics/1.jpg
03/pics/1.jpg
etc
I need the save for web and devices to save the files generated from the directories to be put in:
01/thumb1.jpg
01/thumb2.jpg
01/thumb3.jpg
02/thumb1.jpg
02/thumb2.jpg
02/thumb3.jpg
03/thumb1.jpg
03/thumb2.jpg
03/thumb3.jpg
etc
each thumb representing a different size. Right now it does the thumbs just fine, but it puts them all in the same dir. I'm going to try out the script posted earlier in the thread, thanks!-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment
-
ok so for my purposes this should work:
Code:var FileName = file.name.split('.'); var Filename = new File(decodeURI(outputFolder) + "../" + FileName[0] + ".jpg"); var testFile = new File(decodeURI(outputFolder) + "../" + FileName[0] + ".jpg"); var doc = activeDocument; if(win.panel0.panel2.ResizeCheck.value) FitImage( parseInt(win.panel0.panel2.Width.text), parseInt(win.panel0.panel2.Height.text) ); if(win.panel0.panel2.Action.value) doAction(win.panel0.panel2.ActionName.selection.text, win.panel0.panel2.ActionSet.selection.text); if(Filename.exists) testFile.rename(testFile.name.slice(0,-4) + time() + ".jpg"); SaveForWeb(Filename,parseInt(win.panel0.panel1.qual.selection)); app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment
-
go to File > Scripts and if it doesn't show up, then > BrowseThis post is endorsed by CIA, KGB, MI6, the Mafia, Illuminati, Kim Jong Il, Worldwide Ninjas Association, Klingon Empire and lolcats. Don't mess around with it, just accept it and embrace the truthComment
-
hmm that didn't seem to work, nor did /../ok so for my purposes this should work:
Code:var FileName = file.name.split('.'); var Filename = new File(decodeURI(outputFolder) + "../" + FileName[0] + ".jpg"); var testFile = new File(decodeURI(outputFolder) + "../" + FileName[0] + ".jpg"); var doc = activeDocument; if(win.panel0.panel2.ResizeCheck.value) FitImage( parseInt(win.panel0.panel2.Width.text), parseInt(win.panel0.panel2.Height.text) ); if(win.panel0.panel2.Action.value) doAction(win.panel0.panel2.ActionName.selection.text, win.panel0.panel2.ActionSet.selection.text); if(Filename.exists) testFile.rename(testFile.name.slice(0,-4) + time() + ".jpg"); SaveForWeb(Filename,parseInt(win.panel0.panel1.qual.selection)); app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment
-
-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment
-
-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment
-
This post is endorsed by CIA, KGB, MI6, the Mafia, Illuminati, Kim Jong Il, Worldwide Ninjas Association, Klingon Empire and lolcats. Don't mess around with it, just accept it and embrace the truthComment
-
-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment
-
-
This post is endorsed by CIA, KGB, MI6, the Mafia, Illuminati, Kim Jong Il, Worldwide Ninjas Association, Klingon Empire and lolcats. Don't mess around with it, just accept it and embrace the truthComment
-
I'll have to see if I still have my license laying around or i'll have to email them and wait.i simply use www.thumbnailer.com
I need a faster way to pick one pic from a gallery and just export thumbs in 3 different sizes.-uno
icq: 111-914
CrazyBabe.com - porn art
MojoHost - For all your hosting needs, present and future. Tell them I sent ya!Comment

Comment