圖片名稱是:
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('成功執行!');
0 回應:
張貼留言