ব্যাচ পৃথক পিএনজি ফাইলে ফটোশপের স্তর রফতানি করে


130

আমি আতশবাজিতে ওয়েব ডেভ এবং দক্ষ, তবে ফটোশপে তেমন কিছু না।

আমি একটি ওয়েব পৃষ্ঠায় রূপান্তর করতে সবেমাত্র একটি স্তরযুক্ত পিএসডি ফাইল পেয়েছি। যে কেউ আমাকে সমস্ত স্তরটি পৃথক পিএনজি ফাইলগুলিতে রপ্ত করার সবচেয়ে সহজ উপায় বলতে পারেন?

প্রচুর স্তর রয়েছে এবং এটি ম্যানুয়ালি করা ভুল মনে হয়।

আমি দেখেছি এই কিন্তু এটা নেটিভ কার্যকারিতা দ্রষ্টব্য এই জন্য সেখানে উচিত বলে মনে করেন না।

আমার ফটোশপ সিএস 4 এ অ্যাক্সেস রয়েছে। কোন পয়েন্টার প্রশংসা।


.Png গুলি সূচি মোডে রূপান্তরিত করা এড়ানোর কোনও উপায় আছে কি? আমার তাদের আরজিবি দরকার। আমি সম্ভবত এটির জন্য একটি ফোঁটা তৈরি করতে পারলাম, তবে এটির সহজ উপায় আছে কিনা তা জানতাম না ... টিপটির জন্য ধন্যবাদ যদিও এটি দুর্দান্ত!

convertইমেজম্যাগিকের ফ্রি কমান্ড এটির জন্য ব্যবহার করা যেতে পারে (এটিতে সম্পূর্ণ পিএসডি বৈশিষ্ট্যগুলির কভারেজের অভাব হতে পারে)।
ইউরিয়েল

উত্তর:


158

পদ্ধতি 1: অ্যাডোব থেকে বিল্ট-ইন স্ক্রিপ্ট

File >> Scripts >> Export layers to files...

এখানে চিত্র বর্ণনা লিখুন

সম্পর্কিত কিছু প্রশ্ন এখানে ...

ফটোশপে স্বতন্ত্র স্তরগুলি রফতানি করে, তাদের আকারগুলি রেখে

ফাইলগুলিতে স্তর রফতানি করুন 100 স্তর থেকে 4 টি পিএনজি ফাইল রফতানি করে


পদ্ধতি 2: কাস্টম স্ক্রিপ্ট

আমি কিছু সময় ব্যয় করেছি এবং এই প্রক্রিয়াটি স্বয়ংক্রিয় করতে আমার নিজস্ব স্ক্রিপ্ট ফাইল লিখেছি। এই প্রক্রিয়াটি উল্লিখিত অন্তর্নির্মিত স্ক্রিপ্টের চেয়ে অনেক দ্রুত।

স্ক্রিপ্ট এখন গিথুব এ পান!

অতিরিক্ত তথ্য

আমি এই স্ক্রিপ্টটি 60 সেকেন্ডের নীচে একটি 100 স্তর, 450MB ফাইলটিতে চালিয়েছি। একই ফাইলে অন্তর্নির্মিত স্ক্রিপ্টটি চালাতে আমার প্রায় 30 মিনিট সময় লাগে।

নেস্ট লেয়ার গ্রুপগুলির সাথে পরীক্ষার সময়, আমি দেখতে পেলাম যে আমার স্ক্রিপ্টটি প্রায় 90 সেকেন্ডের মধ্যে চলে যখন বিল্ট-ইন স্ক্রিপ্টটি প্রায় 27 মিনিট সময় নেয় (এবং প্রকৃতপক্ষে এটি ভুল রফতানি করে)।

দয়া করে মনে রাখবেন যে ফাইলগুলির জটিলতার পাশাপাশি আপনার কম্পিউটারের হার্ডওয়্যার এবং ফটোশপের সংস্করণ অনুসারে এই ফলাফলগুলি পৃথক হবে। অতিরিক্ত কর্মক্ষমতা ডেটা

এই লিপিটি (বিগত কয়েক বছর ধরে) বিভিন্ন অবদানকারীদের থেকে বিভিন্ন উন্নতি করেছে আপনি যদি স্ক্রিপ্টটি নিয়ে কোনও সমস্যা চালান। আপনি এখানে স্ক্রিপ্টের সাথে সমস্যাগুলি ফাইল করতে পারেন ।

কোনও অতিরিক্ত, অতিরিক্ত তথ্যের জন্য দয়া করে আমাকে পড়ুন through

দাবি অস্বীকার: এই স্ক্রিপ্টটি কোনওভাবেই অ্যাডোবের সাথে সম্পর্কিত নয়। দয়া করে আপনার নিজের ঝুঁকিতে স্ক্রিপ্টটি ব্যবহার করুন - ব্যবহারের আগে সর্বদা আপনার পিএসডি-এর ব্যাক-আপ করুন। কোনও ক্ষতিগ্রস্থ বা হারিয়ে যাওয়া ডেটার জন্য আমি দায়ী নই।


1
@ লুসিয়ান - আপনি ফটোশপ সিসি ব্যবহার করছেন আপনি অন্যথায় এটি করতে পারেন, গিথুবে একটি সমস্যা ফাইল করুন । ধন্যবাদ!
হান্না

জোহানেস এই প্রশ্নের জন্য একটি দুর্দান্ত স্ক্রিপ্ট তৈরি করেছে এবং এটি বেশ কয়েকবার যথাযথভাবে উত্থাপনের দাবিদার হওয়া উচিত তবে দয়া করে মন্তব্যে এর জন্য সমর্থন চাইবেন না। আপনার যদি এটির সাথে কোনও সমস্যা থাকে তবে দয়া করে রেপোর মাধ্যমে কোনও সমাধান সন্ধান করুন যাতে সে অনুযায়ী সেগুলি অনুসরণ করা যায়।
DᴀʀᴛʜVᴀᴅᴇʀ

2018 থেকে প্রতিবেদন করা This এই সরঞ্জামটি এখন, আন্ডারFile -> Export -> Layers to Files...
আখিনুরি

যদি অন্য কেউ বিভ্রান্ত হয় তবে এটি ফটোশপ স্ক্রিপ্ট এবং তাই ফটোশপের প্রয়োজন। আমি ভেবেছিলাম এটি শেল স্ক্রিপ্ট হতে চলেছে। :)
ক্রিস রায়ে

1
@ হান্না এগুলি ইপিক !! সুন্দর কাজ এবং আপনাকে ধন্যবাদ!
ক্রিস এমারসন

18

আমি এক বছর আগে জোহানিসের সমাধানটি অনেক উন্নতি করে আপডেট করেছি। উল্লেখযোগ্যভাবে:

  • স্তর স্তরগুলি এখন সঠিকভাবে পরিচালনা করা হয় যাতে সমস্ত স্তরগুলি লিখিত হয়।
  • সংঘর্ষগুলি রোধ করার জন্য ফাইলের নামগুলি স্বয়ংক্রিয়ভাবে বর্ধিত হয় (একাধিক স্তরের একই নাম থাকলে এটি ঘটে)।
  • পারফরম্যান্স বাড়ে। স্ক্রিপ্টটি কয়েক মিনিটের মধ্যে 500 টি সহজ স্তর সংরক্ষণ করতে পারে।

এটি ছাড়াও কোডটি পরিষ্কার করা হয়েছে। উদাহরণস্বরূপ, গ্লোবাল ভেরিয়েবলগুলি একটি একক অ্যারেতে সংহত করা হয়েছে।

নোট করুন যে প্রাথমিক পপআপ বার্তা আপনাকে কেবল শীর্ষ স্তরের স্তরগুলির সংখ্যা বলবে । এটি পারফরম্যান্সের অবক্ষয় এড়ানোর জন্য। আমি এমন একটি ক্ষেত্রে ভাবতে পারি না যেখানে আপনি যে ফাইলটির সাথে লেনদেন করছেন সে সম্পর্কে আপনি কিছু জানেন না, তাই এটি কোনও সমঝোতা হওয়া উচিত নয়।

এখানে স্ক্রিপ্টটি ধরুন । পথের নেতৃত্ব দেওয়ার জন্য পূর্ববর্তী লেখককে ধন্যবাদ।


এই স্ক্রিপ্টটি বজায় রাখার জন্য সত্যিই ভাল কাজ করেছে। এটি হাজার হাজার স্তরগুলিতে সংশোধন করে কিছু সময় রফতানি করতে খুব ভালভাবে কাজ করেছে :)
iwasrobbed

7

ক্রেডিট ফাইলটি চালিয়ে যাওয়ার জন্য জনগণের কাছে যান। তোমাকে অনেক ধন্যবাদ!

আমি একটি ফাংশন যুক্ত করেছি যা আমার 2448 স্তর ফাইলটি প্রায় 3 ঘন্টার মধ্যে যেতে সহায়তা করে।

এখানে পরিবর্তিত ফাইল ডাউনলোডের লিঙ্কটি এখানে


6

আমি ডকটির মূল ব্যাকগ্রাউন্ডলায়ারটি ব্যবহার করতে স্ক্রিপ্টটি আপডেট করেছি। যাতে প্রতিটি জেপিজি রফতানি করে তা সংকলিত হয়।

যদি কেউ ডিফল্ট ব্যাকগ্রাউন্ডলায়ারের পরিবর্তে স্তরগুলিকে মাস্টার স্তর তৈরি করতে ট্যাগগুলিতে ট্যাগ যুক্ত করে থাকে তবে দুর্দান্ত হবে ;-)

সম্পূর্ণ স্ক্রিপ্ট:

    // NAME: 
//  SaveLayers

// DESCRIPTION: 
//  Saves each layer in the active document to a PNG or JPG file named after the layer. 
//  These files will be created in the current document folder (same as working PSD).

// REQUIRES: 
//  Adobe Photoshop CS2 or higher

//Most current version always available at: https://github.com/jwa107/Photoshop-Export-Layers-as-Images

// enable double-clicking from Finder/Explorer (CS2 and higher)
#target photoshop
app.bringToFront();

function main() {
    // two quick checks
    if(!okDocument()) {
        alert("Document must be saved and be a layered PSD.");
        return; 
    }

    var len = activeDocument.layers.length;
    var ok = confirm("Note: All layers will be saved in same directory as your PSD.\nThis document contains " + len + " top level layers.\nBe aware that large numbers of layers may take some time!\nContinue?");
    if(!ok) return

    // user preferences
    prefs = new Object();
    prefs.fileType = "";
    prefs.fileQuality = 12;
    prefs.filePath = app.activeDocument.path;
    prefs.count = 0;

    //instantiate dialogue
    Dialog();
    hideLayers(activeDocument);
    saveLayers(activeDocument);
    toggleVisibility(activeDocument);
    alert("Saved " + prefs.count + " files.");
}

function hideLayers(ref) {
    var len = ref.layers.length;
    for (var i = 0; i < len; i++) {
        var layer = ref.layers[i];
        if (layer.typename == 'LayerSet') hideLayers(layer);
        else layer.visible = false;
    }
}

function toggleVisibility(ref) {
    var len = ref.layers.length;
    for (var i = 0; i < len; i++) { 
        layer = ref.layers[i];
        layer.visible = !layer.visible;
    }
}

function saveLayers(ref) {
    var len = ref.layers.length;
    // rename layers top to bottom
    for (var i = 0; i < len; i++) {
        var layer = ref.layers[i];
        if (layer.typename == 'LayerSet') {
            // recurse if current layer is a group
            hideLayers(layer);
            saveLayers(layer);
        } else {
            // otherwise make sure the layer is visible and save it
            layer.visible = true;

    // NEW MASTER BACKGROUND LAYER -- comment this line if u dont want to see that layer compiled in the jpgs
       activeDocument.backgroundLayer.visible = true;

    saveImage(layer.name);

     layer.visible = false;
        }
    }
}

function saveImage(layerName) {
    var fileName = layerName.replace(/[\\\*\/\?:"\|<> ]/g,''); 
    if(fileName.length ==0) fileName = "autoname";
    var handle = getUniqueName(prefs.filePath + "/" + fileName);
    prefs.count++;

    if(prefs.fileType=="PNG" && prefs.fileQuality=="8") {
        SavePNG8(handle); 
    } else if (prefs.fileType=="PNG" && prefs.fileQuality=="24") {
        SavePNG24(handle);
    } else {
        SaveJPEG(handle); 
    }
}

function getUniqueName(fileroot) { 
    // form a full file name
    // if the file name exists, a numeric suffix will be added to disambiguate

    var filename = fileroot;
    for (var i=1; i<100; i++) {
        var handle = File(filename + "." + prefs.fileType); 
        if(handle.exists) {
            filename = fileroot + "-" + padder(i, 3);
        } else {
            return handle; 
        }
    }
} 

function padder(input, padLength) {
    // pad the input with zeroes up to indicated length
    var result = (new Array(padLength + 1 - input.toString().length)).join('0') + input;
    return result;
}

function SavePNG8(saveFile) { 
    exportOptionsSaveForWeb = new ExportOptionsSaveForWeb();
    exportOptionsSaveForWeb.format = SaveDocumentType.PNG
    exportOptionsSaveForWeb.dither = Dither.NONE;



    activeDocument.exportDocument( saveFile, ExportType.SAVEFORWEB, exportOptionsSaveForWeb );
} 

function SavePNG24(saveFile) { 
    pngSaveOptions = new PNGSaveOptions(); 
    activeDocument.saveAs(saveFile, pngSaveOptions, true, Extension.LOWERCASE); 
} 

function SaveJPEG(saveFile) { 
    jpegSaveOptions = new JPEGSaveOptions(); 
    jpegSaveOptions.quality = prefs.fileQuality;
   activeDocument.saveAs(saveFile, jpegSaveOptions, true, Extension.LOWERCASE); 
} 

function Dialog() {
    // build dialogue
    var dlg = new Window ('dialog', 'Select Type'); 
    dlg.saver = dlg.add("dropdownlist", undefined, ""); 
    dlg.quality = dlg.add("dropdownlist", undefined, "");
    dlg.pngtype = dlg.add("dropdownlist", undefined, "");


    // file type
    var saveOpt = [];
    saveOpt[0] = "PNG"; 
    saveOpt[1] = "JPG"; 
    for (var i=0, len=saveOpt.length; i<len; i++) {
        dlg.saver.add ("item", "Save as " + saveOpt[i]);
    }; 

    // trigger function
    dlg.saver.onChange = function() {
        prefs.fileType = saveOpt[parseInt(this.selection)]; 
        // decide whether to show JPG or PNG options
        if(prefs.fileType==saveOpt[1]){
            dlg.quality.show();
            dlg.pngtype.hide();
        } else {
            dlg.quality.hide();
            dlg.pngtype.show();
        }
    }; 

    // jpg quality
    var qualityOpt = [];
    for(var i=12; i>=1; i--) {
        qualityOpt[i] = i;
        dlg.quality.add ('item', "" + i);
    }; 

    // png type
    var pngtypeOpt = [];
    pngtypeOpt[0]=8;
    pngtypeOpt[1]=24;
    dlg.pngtype.add ('item', ""+ 8 );
    dlg.pngtype.add ('item', "" + 24);

    // trigger functions
    dlg.quality.onChange = function() {
        prefs.fileQuality = qualityOpt[12-parseInt(this.selection)];
    };
    dlg.pngtype.onChange = function() {
       prefs.fileQuality = pngtypeOpt[parseInt(this.selection)]; 
    };

    // remainder of UI
    var uiButtonRun = "Continue"; 

    dlg.btnRun = dlg.add("button", undefined, uiButtonRun ); 
    dlg.btnRun.onClick = function() {   
        this.parent.close(0); 
    }; 

    dlg.orientation = 'column'; 

    dlg.saver.selection = dlg.saver.items[0] ;
    dlg.quality.selection = dlg.quality.items[0] ;
    dlg.center(); 
    dlg.show();
}

function okDocument() {
     // check that we have a valid document

    if (!documents.length) return false;

    var thisDoc = app.activeDocument; 
    var fileExt = decodeURI(thisDoc.name).replace(/^.*\./,''); 
    return fileExt.toLowerCase() == 'psd'
}

function wrapper() {
    function showError(err) {
        alert(err + ': on line ' + err.line, 'Script Error', true);
    }

    try {
        // suspend history for CS3 or higher
        if (parseInt(version, 10) >= 10) {
            activeDocument.suspendHistory('Save Layers', 'main()');
        } else {
            main();
        }
    } catch(e) {
        // report errors unless the user cancelled
        if (e.number != 8007) showError(e);
    }
}

wrapper();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.