2012-11-23 10 views
5

में फ़ाइलों को एक साथ विलय (साइड बाय साइड) विलय करना मुझे निम्नलिखित बात करने की आवश्यकता है। नामकरण सम्मेलन के साथ फ़ोल्डर में एकाधिक पीएनजी फाइलें सेट करना: 1.png 1_m.png, 2.png 2_m.png (और इसी तरह)। पीएनजी फाइलों की एक ही चौड़ाई और ऊंचाई (320 x 360 पीएक्स) है।फ़ोल्डर फ़ोटोशॉप स्क्रिप्ट

1_m.png 1.png फ़ाइलें ले और जिसमें 1_m.png सही पर छोड़ दिया और 1.png पर रखा गया है एक नई फ़ाइल बनाना:

अब स्क्रिप्ट निम्न करना चाहिए उन दोनों को एक परत पर मर्ज करें और इसे बचाने के लिए कहें 1_done.png, फ़ोल्डर में सभी फ़ाइलों पर यह क्रिया चलाएं।

यह फ़ोटोशॉप स्क्रिप्ट नहीं होना चाहिए मैंने वेब की खोज की है लेकिन कोई उपयोगी समाधान नहीं मिला। यहां पत्थर में कुछ भी सेट नहीं है, फाइलें अलग-अलग फ़ोल्डरों में हो सकती हैं जो कभी भी सबसे आसान समाधान होगा। मेरा फ़ोटोशॉप संस्करण सीएस 5

उत्तर

3

यह स्क्रिप्ट वह वही करेगा जो आप चाहते हैं। सभी फ़ाइलों को निर्देशिका में रखें और फिर स्वचालित बैच -> स्क्रिप्ट का उपयोग करके स्क्रिप्ट चलाएं। इसे फ़ाइल-नाम में बिना अंडरस्कोर के एक छवि मिलेगी और फिर इसे युग्मित नाम फ़ाइल ("_m" के साथ) खोलें, उन्हें एक तरफ रख दें और फ़ाइल नाम पर जोड़े गए _done के साथ इसे सेव करें।

// pref पिक्सेल app.preferences.rulerUnits = Units.PIXELS;

var srcDoc = app.activeDocument; 

// call the current document 
var srcDoc = app.activeDocument; 

// set original width and height 
var imageW = srcDoc.width.value; 
var imageH = srcDoc.height.value; 

// get the info out of the source doc 
var fileName = srcDoc.name; 
var docName = fileName.substring(0,fileName.length -4); 
var filePath = srcDoc.path.toString(); 
var fileExt = fileName.substring(fileName.length -4, fileName.length); 

var nameCheck = fileName.substring(0,fileName.indexOf("_")); 

if (nameCheck <1) 
{ 
    // no underscore so we need to open it's namesake 
    // alert(nameCheck) 
    var filePair = filePath + "/" + docName + "_m" + fileExt; 
    openThisFile(filePair) 
    activeDocument.selection.selectAll() 
    activeDocument.selection.copy(); 
    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
    app.activeDocument = srcDoc; 
    activeDocument.resizeCanvas(imageW *2, imageH, AnchorPosition.MIDDLELEFT); 
    selectRect(0, imageW, imageW*2, imageH) 
    activeDocument.paste() 
    activeDocument.flatten(); 
    var newName = filePath + "/" + docName + "_done" + fileExt 
    saveMe(newName) 
} 
    else 
    { 
     app.activeDocument.close(SaveOptions.DONOTSAVECHANGES); 
    } 


function openThisFile(masterFileNameAndPath) 
{ 
var fileRef = new File(masterFileNameAndPath) 
if (fileRef.exists) 
//open that doc 
{ 
    app.open(fileRef); 
} 
else 
{ 
    alert("error opening " + masterFileNameAndPath) 
} 
} 


function selectRect(top, left, right, bottom) 
{ 
    srcDoc.selection.deselect() 
    // ======================================================= 
    var id1 = charIDToTypeID("setd"); 
    var desc1 = new ActionDescriptor(); 
    var id2 = charIDToTypeID("null"); 
    var ref1 = new ActionReference(); 
    var id3 = charIDToTypeID("Chnl"); 
    var id4 = charIDToTypeID("fsel"); 
    ref1.putProperty(id3, id4); 
    desc1.putReference(id2, ref1); 
    var id5 = charIDToTypeID("T "); 
    var desc2 = new ActionDescriptor(); 
    var id6 = charIDToTypeID("Top "); 
    var id7 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id6, id7, top); 
    var id8 = charIDToTypeID("Left"); 
    var id9 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id8, id9, left); 
    var id10 = charIDToTypeID("Btom"); 
    var id11 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id10, id11, bottom); 
    var id12 = charIDToTypeID("Rght"); 
    var id13 = charIDToTypeID("#Pxl"); 
    desc2.putUnitDouble(id12, id13, right); 
    var id16 = charIDToTypeID("Rctn"); 
    desc1.putObject(id5, id16, desc2); 
    executeAction(id1, desc1, DialogModes.NO); 
} 

function saveMe(fPath) 
{ 

// save out the image 
var pngFile = new File(fPath); 
pngSaveOptions = new PNGSaveOptions(); 
pngSaveOptions.embedColorProfile = true; 
pngSaveOptions.formatOptions = FormatOptions.STANDARDBASELINE; 
pngSaveOptions.matte = MatteType.NONE; pngSaveOptions.quality = 1; 
activeDocument.saveAs(pngFile, pngSaveOptions, false, Extension.LOWERCASE); 

// close that saved png 
app.activeDocument.close() 
} 
+0

स्क्रिप्ट के लिए धन्यवाद। यह सही काम करता है। मैं बस बैच नहीं ढूंढ सकता -> स्क्रिप्ट कमांड यह केवल फ़ोटोशॉप के विस्तारित संस्करण में है? – adam

+0

सबसे पहले स्क्रिप्ट को एक क्रिया के रूप में रिकॉर्ड करें। एक्शन -> नई एक्शन (इसे एक नाम दें), रिकॉर्ड करें और फिर रिकॉर्डिंग बंद करें - यह अक्सर महत्वपूर्ण है। और फिर बैच फ़ाइल से स्क्रिप्ट को कॉल करें। मुझे CS5 के बारे में निश्चित नहीं है - लेकिन निश्चित रूप से CS2 के तहत आप इसे फ़ाइल -> स्वचालित -> बैच के अंतर्गत पाएंगे, फिर उस फ़ोल्डर को चुनें जिसमें वह है। इसे चलाने के लिए ठीक दबाएं। –

+0

अब यह काम बेकार ढंग से धन्यवाद है। – adam

2

मैं ImageMagick जिसके लिए Windows, OSX और लिनक्स मुक्त करने के लिए उपलब्ध है के साथ ऐसा होता है - वास्तव में यह सबसे Linux distros पर वैसे भी स्थापित किया गया है।

यह की जड़ ImageMagick के convert आदेश का उपयोग करने के लिए मूल रूप से इस तरह की ओर से दो छवियों पक्ष संलग्न करने के लिए, यह है:

convert left.png right.png +append out.png 

तो स्क्रिप्ट इस तरह दिखता है - (यह के लगभग आधे टिप्पणी है):

#!/bin/bash 
for i in [0-9]*_m.png; do 
    # Deduce name of left image 
    left="$i" 
    # Deduce name of right image 
    right="${i/_m/}" 
    # Deduce name of output image 
    done="${i/_m/_done}" 
    # Merge the little devils 
    convert "$left" "$right" +append "$done" 
done 

हम इस तरह छवियों के साथ शुरू करते हैं:

enter image description here

,210

और

enter image description here

यह सब जोड़े के लिए यह उत्पन्न करेगा:

enter image description here

संबंधित मुद्दे