zoukankan      html  css  js  c++  java
  • 关于使用 ps脚本来处理图片的排层问题

    问题是这样,在三维软件 把模型切割,给切割的部件排上序号 如 :tianji_1-431_bujian13.png 

    中间一段数据就是表示的 1.431 该数据之后 会到ps总排层使用

    在ps排层出三维渲染数据 只要是二次处理图像 

    之后在到flash中条动画 该数据 用来在flash中排层 

    但是ps 对部件排层使用了 1.431 :tianji_1-431_bujian13.png  字典方法,

    时候对 1.431  进行sort 但是 是使用数据交换 界面不断刷新太卡

    使用的方法是该文件图层有序的输出到另一个文档中 ,

    之前使用的代码是 :

    ///利用现有脚本功能 
    /// 对名称进行排序 建立字典 使用层级移动完成 
    //$.level = 1
    //该函数完成对层级名称收集 
    function  getLayerName  ()
    {
    	var doc =activeDocument  //app.documents[1] // 一般使用这个 是当前激活的层级关系 很重要
    	var clayer = doc.layers.length 
    	var newname = new Array () 
    	for (var i = 0 ; i< clayer ; i ++){
    		temname = doc.layers[i].name 
    		newname.push (temname)
    	}	
    	return newname 
    }
    // 该方法是对现有层级名称使用分隔符号分成名称转成数组数组 
    // 里面是 字符串数子  不转换为了后面字典方便
    function getLayernum ()
    {
    	var   newNum = new Array()
    	var conLayerNames = getLayerName()
    	var i = 0 
    	for (i   ; i<conLayerNames.length; i++){
    		try{
    		var cic = conLayerNames[i].split("_")
    		var cicnum = cic[1].split("-")
    		newNum.push ((cicnum[0] +"."+cicnum[1]))
    		}catch(e)
    		{
    			newNum.push (i+"") // 出了问题给个假序号	
    		}
    	}	
    	return  newNum 
    }
    // 该方法主要是对 getLayernum 字符串形式 转成float 进行排序
    function getLayernumfloat  (){
    	var coc = getLayernum()
    	var tem = new Array ()
    	for (var i=0 ; i <coc.length ; i ++){
    		var ffl  = parseFloat  (coc [i])
    		tem.push (ffl)
    	}
    	return tem 
    }
    
    
    
    // 只要是测试 
    // 
    //只要是创建字典  getLayernum 位键 getLayerName 是value 
    // 要处理的键 value 一定是相等的 里面是一个 key value 数组 
    function  CreateDit  ()
    {
    	var keys = getLayernum() // 字符串处理 
    	var values = getLayerName() // 层级的名称 
    	var  conoob = new Array () // 用于收集对象 
    	// 这样的表示方法就是一个字典 
    	// 可以循环出来键 通过键访问value 
    	for (var i = 0 ; i <keys.length ; i ++){
    		conoob[keys[i]] = values[i]	
    	}
    	return  conoob 			
    }
    
    /*
    建立好后字典数组 下来是对 提取数字排序
    // 现在提前分享排序应该是从大道小
       l = a.sort(function compare(a,b){return -(a-b);});   实现反向处理
    var tes = CreateDit()
    
    // 激活设置
    var cii= app.documents[1]
    var  cc = app.activeDocument = cii  
    // 通过名称找到层
    var d = "tianji_1-109_bujian31.png"
    var c = app.activeDocument.layers[d]
    alert (c.name)
    */
    //这里只要是实现对图层排列操作
    function  engineStart (){
    	var docCull  =activeDocument  //当前的文档折后用于切换文档使用 
    	var h = docCull.height 
    	var w = docCull.width 
    	var connum = getLayernumfloat() // 转换好的float 数组
    	
    	var endSort = connum.sort(function compare(a,b){return (a-b);});  // 这里面就是正确的排除
    	
    	var tes = CreateDit() // 建立字典 
    //	alert(endSort)
    	// 在这里新建文档 
    	var newdoc = app.documents.add( w, h , 72)
    	
    	for (var i = 0 ; i < endSort.length; i++)
    	{
    		 var layerRef= newdoc.layers[0]
    		app.activeDocument =docCull
    		var strFloat = endSort[i]+"" // 用于当做字典的键
    		var pngImagelayer =tes[strFloat] // 这里是层的名称
    		// 选择层
    		
    		 var c = docCull.layers[pngImagelayer]
    		docCull.activeLayer = c 
    
    		c.duplicate (layerRef , ElementPlacement.PLACEBEFORE)
    		//docCull.flatten()
    		/*
    		docCull.selection.selectAll(true)
    		docCull.selection.copy()
    		app.activeDocument =newdoc
    		newdoc.paste()	
    		*/
    
    		/*
    		使用从新建立文档思路 
    		*/
    		
    		 //alert(pngImagelayer)
    		//var  layerObj = app.activeDocument.layers[pngImagelayer]// 层的对象
    		//var  layerObjAfter  = app.activeDocument.layers[pngImagelayerAfter]// 层的对象
    		//layerObj.moveAfter (layerObjAfter )
    	//	layerObj.move (layerObjAfter,ElementPlacement.PLACEAFTER)
    	}
    	
    
    }// end 
    
    engineStart()
    

      

    docCull.selection.selectAll(true)
    docCull.selection.copy()
    app.activeDocument =newdoc
    newdoc.paste()

    发现从当前层拷贝到另一个文档的图层 会出现资源始终在中心位置 

    后来使用了 duplicate 

    这个是赋值图层他的好处是 目录可以放到任意打开的文档 

    c.duplicate (layerRef , ElementPlacement.PLACEBEFORE)

    完美接口  排层问题 

  • 相关阅读:
    Yii Listview 更新及搜索
    Yii框架CGridView columns中使用数组或变量传值
    冲刺七天---05
    冲刺七天---04
    爱心图书剧本描述
    冲刺七天----03
    冲刺七天---02
    冲刺七天---01
    PSP周总结03
    psp周总结02
  • 原文地址:https://www.cnblogs.com/gaitian00/p/3747383.html
Copyright © 2011-2022 走看看