Skip to main content
Giddy_neighbors16E5
Participant
April 5, 2024
Question

Smart Object PSD instead of PSB format

  • April 5, 2024
  • 4 replies
  • 687 views

my smart objects open as PSB files all of a sudden, and not as PSD anymore, which I need for my workflow.
Any ideas how to change it back to the PSD format?

This topic has been closed for replies.

4 replies

c.pfaffenbichler
Community Expert
Community Expert
April 6, 2024
quote

my smart objects open as PSB files all of a sudden, and not as PSD anymore, which I need for my workflow.

What difference does it make in your workflow? 

Stephen Marsh
Community Expert
Community Expert
April 6, 2024

@Giddy_neighbors16E5 – Although I'm unsure on why something like this is needed, you can try this script (work on duplicated images and check the results with care to ensure that this is what you are looking for):

 

/*
Convert Embedded PSB Smart Object Layer to PSD.jsx
v1.0 - 6th April 2024, Stephen Marsh
https://community.adobe.com/t5/photoshop-ecosystem-discussions/smart-object-psd-instead-of-psb-format/td-p/14536909
*/

#target photoshop

// Check that the active layer is a SO
if (app.activeDocument.activeLayer.kind === LayerKind.SMARTOBJECT) {
    // Check that the active layer is an embedded SO
    var ref = new ActionReference();
    ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
    var layerDesc = executeActionGet(ref);
    ref.putProperty(charIDToTypeID("Prpr"), stringIDToTypeID("smartObject"));
    ref.putEnumerated(charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt"));
    var so = executeActionGet(ref).getObjectValue(stringIDToTypeID("smartObject"));
    if (so.getBoolean(stringIDToTypeID("linked")) === false) {
        // Set the active layer
        var theSO = app.activeDocument.activeLayer;
        // Get the active layer name
        var theSOname = theSO.name;
        // Edit the original embedded SO
        app.runMenuItem(stringIDToTypeID('placedLayerEditContents'));
        // Get the original SO path
        var theSOpath = app.activeDocument.path;
        // Strip the extension
        var docName = activeDocument.name.replace(/\.[^\.]+$/, '');
        // Create the PSD file object path and name
        var savePSDName = File(theSOpath + "/" + docName + ".psd");
        // Save the PSD
        savePSD(savePSDName);
        // Close the original SO without saving
        app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
        // Select the SO layer
        app.activeDocument.activeLayer = theSO;
        // Place the PSD version of the PSB
        placeEmbedded();
        // Rename the SO layer
        app.activeDocument.activeLayer.name = theSOname;
        // Remove the original SO layer
        theSO.remove();
    } else {
        alert("The layer isn't an Embedded Smart Object!");
    }
} else {
    alert("The layer isn't a Smart Object!");
}


///// Functions /////

function savePSD(saveFile) {
    psdSaveOptions = new PhotoshopSaveOptions();
    psdSaveOptions.embedColorProfile = true;
    psdSaveOptions.alphaChannels = true;
    psdSaveOptions.layers = true;
    psdSaveOptions.spotColors = true;
    activeDocument.saveAs(saveFile, psdSaveOptions, true, Extension.LOWERCASE);
}

function placeEmbedded() {
    function s2t(s) {
        return app.stringIDToTypeID(s);
    }
    var descriptor = new ActionDescriptor();
    descriptor.putInteger(s2t("ID"), 6);
    descriptor.putPath(s2t("null"), new File(savePSDName));
    executeAction(s2t("placeEvent"), descriptor, DialogModes.NO);
}

 

https://prepression.blogspot.com/2017/11/downloading-and-installing-adobe-scripts.html

Stephen Marsh
Community Expert
Community Expert
April 5, 2024

@Giddy_neighbors16E5 

 

If you convert a layer into a SO then it's a PSB. If you place a file then the SO is the same format as the original (JPG, PSD, TIFF, AI, PDF etc).

 

What problems does it cause in your workflow if the edited SO is a PSB and not a PSD?

 

Can I assume that you only have embedded smart object PSB files and no linked smart object layers?

 

didiermazier
Community Expert
Community Expert
April 5, 2024

To my little knowledge smart objects have always been .psb files