我的印象是photoshop只支持手动调整时间轴,一次只能编辑一帧。如果我有数百层,创建一个只有几秒钟的 gif 需要几天时间。我怀疑这就是 gif 的制作方式。有没有更快的方法将图层变成动画续集?
如何在 Photoshop 中快速将数百个图层变成动画续集?
平面设计
adobe-photoshop
动画片
2022-02-13 20:06:29
2个回答
Window > Timeline
- 单击
Create Video Timeline
按钮。 - 时间轴面板菜单选择
Convert Frames > Covert to Frame Animation
- 时间轴面板菜单选择
Make Frames from Layers
从那里你必须手动改变时间、补间、序列等。
我写了一个脚本,因为我厌倦了手动编辑它,给你。
//make a video timeline
// =======================================================
var idconvertTimeline = stringIDToTypeID( "convertTimeline" );
var desc4 = new ActionDescriptor();
executeAction( idconvertTimeline, desc4, DialogModes.NO );
var layerName = app.activeDocument.activeLayer.name;
var firstLayer = app.activeDocument.activeLayer;
//alert(layerName);
var secondLayerName;
var secondLayer;
var thirdLayerName;
var thirdLayer;
secondLayerName = layerName.replace("(1)","(2)");
//alert(secondLayerName);
secondLayer = app.activeDocument.layers.getByName(secondLayerName);
//alert(secondLayer);
// =======================================================
var idDplc = charIDToTypeID( "Dplc" );
var desc6 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref2 = new ActionReference();
var idanimationFrameClass = stringIDToTypeID( "animationFrameClass" );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref2.putEnumerated( idanimationFrameClass, idOrdn, idTrgt );
desc6.putReference( idnull, ref2 );
executeAction( idDplc, desc6, DialogModes.NO );
firstLayer.visible = false;
for(var i = 2; i < 38; i++){
var str = "(" + i + ")";
var str2 = "(" + (i+1) + ")";
thirdLayerName = secondLayerName.replace(str,str2);
//alert(thirdLayerName);
thirdLayer = app.activeDocument.layers.getByName(thirdLayerName);
//alert(thirdLayer);
// =======================================================
var idDplc = charIDToTypeID( "Dplc" );
var desc7 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref3 = new ActionReference();
var idanimationFrameClass = stringIDToTypeID( "animationFrameClass" );
var idOrdn = charIDToTypeID( "Ordn" );
var idTrgt = charIDToTypeID( "Trgt" );
ref3.putEnumerated( idanimationFrameClass, idOrdn, idTrgt );
desc7.putReference( idnull, ref3 );
executeAction( idDplc, desc7, DialogModes.NO );
secondLayer.visible = false;
secondLayerName = thirdLayerName;
secondLayer = thirdLayer;
}
其它你可能感兴趣的问题