CS5隐藏图层的速度非常慢
CS5 Hiding layers is painfully slow
是不是只有我认为CS5脚本运行速度非常慢?这几行代码的执行时间超过1分钟。
for (n=0; n<app.activeDocument.layerSets.length; n++) {
app.activeDocument.layerSets[n].visible = false;
}
layerSet的数量为20。我在Vista Home Premium系统上运行CS5.1 64位版本,AMD Athlon 64 X2双核5200+,8GB RAM。
我试图将脚本导出为.JSXBIN,但它仍然需要1分钟以上的时间。当CS5.1运行.JSXBIN脚本时,CS5.1的CPU使用率从3%上升到57%。
这里一定有什么问题,我该如何加快脚本的速度?
//感谢
*编辑*CS5自己的DOM实现似乎是这里的问题所在。通过将与DOM相关的值读取到局部变量中,该脚本的速度提高了两倍以上。
var LayerCount = app.activeDocument.layerSets.length;
var LayerRoot = app.activeDocument.layerSets;
for (n=0; n<LayerCount; n++) {
LayerRoot[n].visible = false;
}
但是,仅仅更改20个对象中的一个属性仍然需要很长时间。如有任何优化帮助,我们将不胜感激:)
我唯一能想到的就是尝试在包含所有层和组的app.activeDocument.layers
中的各个层中循环。执行此操作时,您会注意到已分组的图层仍将保留其原始visible
特性,但由于其父编组处于隐藏状态而被隐藏。
#target photoshop
var myLayers = app.activeDocument.layers;
var myLayersLength = myLayers.length;
for (var i=0; i<myLayersLength; i++) {
myLayers[i].visible = false;
}
编辑:所以我在一个有50层的400mb文件上测试了这个解决方案,它在不到一秒钟的时间内就成功了。你确定问题出在Photoshop上吗?
如果你必须单独迭代每一层和子层来执行一个操作,你可以递归地执行:
#target photoshop
var doc = app.activeDocument;
findLayers(doc);
function findLayers(set) {
for (var i=0; i<set.layerSets.length; i++) {
//recursive call
findLayers(set.layerSets[i]);
//iterate sub-layers and hide
for (var j=0; j<set.layerSets[i].layers.length; j++) {
set.layerSets[i].layers[j].visible = false;
}
}
//hide top-level layers
for (var l=0; l<set.layers.length; l++) {
set.layers[l].visible = false;
}
}
这需要更长的时间,在我的机器上大约20秒,但它会击中文档中的每一层。
注意:我还测试了问题中的原始脚本,它们不适用于未分组的层,因为您正在迭代document.layerSets
而不是document.layers
看看这个ps脚本在层上的迭代很慢-解释这可能对你也有帮助。
相关文章:
- CS5隐藏图层的速度非常慢
- 简单的dart网页应用程序在IE上添加按钮的速度非常慢
- 启动网站时,页面和图像加载速度非常慢
- 太多的音频标签使我的网站加载速度非常慢.有没有解决方案
- 生成图像的速度非常快
- $cordovaContacts加载速度非常慢
- IEDriverServer 发送密钥的速度非常慢 - JavaScript 替代建议
- Facebook推荐/最近的活动挂在浏览器上,速度非常慢
- jQuery:当重复调用时,重绘函数的速度非常慢
- html5sql.js在安卓蜂窝和ICS中的插入速度非常慢
- IE8(javascript):在SELECT元素中加载大量选项的速度非常慢
- CanvasRenderingContext2D.drawImage()在大画布上的Chrome中速度非常慢
- 安卓设备上的JavaScript/HTML/CSS应用程序-速度非常慢
- 使得音频文件在线播放速度非常慢
- 以非常高的速度显示流数据
- 在javascript中切换时,Chrome应用样式表的速度非常慢
- 我的Node.js应用程序的反应速度非常慢
- 许多颜色选择后,动画的表现和速度非常慢
- Javascript在Ajax中的加载速度非常慢
- couchDB的过滤速度非常慢,即使使用erlang也是如此