İşte Photoshop komut dosyasıyla aşina olan herkes için katmanları bir Photoshop belgesinden diğerine kopyalamak için zorunlu Javascript makro. Mac üzerinde CS 5.5'te denenmiş ve test edilmiştir.
sourceDocumentName, targetDocumentNameVe layersToCopysen ihtiyaçlarınıza düzenlemeniz gerekir sadece değişkenlerdir.
Mac'te, tıpkı bir şey gibi kaydedebilir copyLayersBetweenDocs.jsx, ardından çalıştırmak için dock'taki Photoshop simgesindeki script dosyasını sürükleyip bırakın. Windows'ta, komut dosyaları klasörüne kaydetmeniz C:\Program Files\Common Files\Adobe\Startup Scripts CS5\Adobe Photoshopve Photoshop uygulamasından açmanız gerekir.
#target photoshop
app.bringToFront();
var sourceDocumentName = 'source-doc';
var targetDocumentName = 'target-doc';
// populate this array with whatever the names of the layers
// you want to copy are
var layersToCopy = new Array(
'road-scenery',
'car',
'wheels',
'front-passenger',
'rear-passenger'
);
// alternatively, specify the name of a layer group containing
// the layers you want to copy over.
// Just uncomment the following line
//var layersToCopy = 'layer-group-to-copy';
copyLayers( layersToCopy, sourceDocumentName, targetDocumentName );
/**
* Copy layer from one document to another
* @param {string|Array} layersToCopy
* @param {string} sourceDocumentName
* @param {string} targetDocumentName
*/
function copyLayers( layersToCopy, sourceDocumentName, targetDocumentName ) {
var
sourceLayer,
targetLayer,
sourceGroup;
var sourceDoc = app.documents[sourceDocumentName];
var targetDoc = app.documents[targetDocumentName];
if ( app.activeDocument != sourceDoc ) {
app.activeDocument = sourceDoc;
}
if ( typeof layersToCopy === 'string' ) {
sourceGroup = sourceDoc.layerSets.getByName( layersToCopy );
targetLayer = sourceGroup.duplicate( targetDoc, ElementPlacement.PLACEATBEGINNING )
}
else if ( Object.prototype.toString.call( layersToCopy ) === '[object Array]' ) {
for ( var i = 0; i < layersToCopy.length; i++ ) {
sourceLayer = sourceDoc.artLayers.getByName( layersToCopy[i] );
targetLayer = sourceLayer.duplicate( targetDoc, ElementPlacement.PLACEATBEGINNING );
}
}
}