圖片名稱是:
a001-01.jpg
a001-02.jpg
a002-01.jpg
a002-02.jpg
b001-01.jpg
b001-02.jpg
b001-03.jpg
而希望可以依 a001.jpg, a002.jpg, b001.jpg 分類串接在一起。
執行方式:
- 檔案 -> 指令碼 -> 瀏覽 -> 選擇 photo_join.jsx
- 在選擇多張要串接的圖片
/** 圖片串接 for (PhotoShop Script) * author : Jax * email : weskerjax[at]gmail.com * website : http://jax-work-archive.blogspot.com/ * history : 2013.02.23 */ // photo_join.jsx //#target photoshop /**水平邊界px*/ var levMargin = 10; /**垂直邊界px*/ var verMargin = 10; var WebJpegOptions = new ExportOptionsSaveForWeb() WebJpegOptions.format = SaveDocumentType.JPEG; WebJpegOptions.quality=80; function main(){ /*取得多個的檔案路徑*/ var fileList = File.openDialog( "開啟 JPG 檔案", "JPG Files:*.jpg", true ); if(fileList.length == 0){ alert("沒有任何檔案"); return; } /*依檔名排序*/ fileList.sort(); /*檔案依前綴分群*/ var groupList = {}; var filePath, i=0; while(filePath=fileList[i++]){ var prefix=filePath.name.match(/([a-z0-9]+)[-_].+\.jpg/i); if(!prefix || !prefix[1]){continue;} if(!groupList[prefix[1]]){ groupList[prefix[1]]=[]; } groupList[prefix[1]].push(filePath); } /*依分群串接圖片*/ for(prefix in groupList){ photoJoin(prefix,groupList[prefix]); } } function copyArt(toArt, fromArt){ /*複製圖層*/ app.activeDocument=fromArt; fromArt.selection.selectAll() fromArt.selection.copy() /*貼上圖層*/ app.activeDocument=toArt; return toArt.paste(); } function photoJoin(prefix, fileList){ /*新增目標圖片文件*/ var newPic = app.documents.add( 1, 1, 72, prefix, NewDocumentMode.RGB, DocumentFill.TRANSPARENT ); workSpace=fileList[0].parent.fsName.replace(/\\/ig,'/');; var height=0; var width = newPic.width; var correspond = []; /*複製所有圖檔至新建立的圖檔*/ for (var i=0; i<fileList.length; i++){ try { var atDoc=open(new File(fileList[i])); } catch (e) { continue; } /*累計高度*/ height += atDoc.height.value + verMargin; /*最大寬度*/ width = Math.max(width,atDoc.width); /*複製圖層*/ var layer = copyArt(newPic, atDoc); correspond.push({ 'layer':layer, 'height':atDoc.height.value }); /*關閉檔案*/ atDoc.close(SaveOptions.DONOTSAVECHANGES); }; app.activeDocument=newPic; /*變更圖片大小*/ newPic.resizeCanvas( width+levMargin*2, height+verMargin, AnchorPosition.TOPLEFT ); /*變更圖層定位*/ var top=verMargin; for (var i=0,l=correspond.length; i<l; i++){ if(correspond[i].layer===undefined){continue;} correspond[i].layer.translate(levMargin, top); /*移動圖層*/ top += correspond[i].height+verMargin; /*定位累計*/ }; /*匯出網頁JPEG*/ newPic.exportDocument( new File(File.encode(workSpace+"/"+prefix+".jpg")), ExportType.SAVEFORWEB, WebJpegOptions ); /*關閉 newArt 文件*/ newPic.close(SaveOptions.DONOTSAVECHANGES); } /*把Photoshop推到最上層*/ app.bringToFront(); /*設定使用的單位為「像素(Pixel)」*/ app.preferences.rulerUnits = Units.PIXELS; /*執行主程式*/ main(); alert('成功執行!');