Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

Generative Fill and Grayscale

Community Expert ,
Jan 10, 2026 Jan 10, 2026

Hello,

Rather than receiving a message asking me to convert the Grayscale image to RGB, Lab or CMYK before using Generative Fill, I would prefer the mode change to be automatic and for the message to tell me that my image has just been converted to RGB and that I am free to convert it to another colour mode.

Thank you.

 

Capture_2601101803.png


Acrobate du PDF, InDesigner et Photoshopographe
Idea No status
TOPICS
macOS , Windows
95
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
4 Comments
Community Expert ,
Jan 10, 2026 Jan 10, 2026

To the Photoshop Team,

 

For the record, I vote against this idea. Please don't ever let Photoshop convert my images to another color mode for me.

 

If you implement this, let it be a choice that we can disable.

 

Thank you,

Jane

Translate
Report
Community Expert ,
Jan 11, 2026 Jan 11, 2026

"Please don't ever let Photoshop convert my images to another color mode for me."

If you want to use Generative fill you must convert to another color mode, so it should be automatic.

In any case you can Undo/Revert/Save As.


Acrobate du PDF, InDesigner et Photoshopographe
Translate
Report
Community Expert ,
Jan 11, 2026 Jan 11, 2026

I'm with Jane. I vote nay.

 

Not that I ever use generative ai toys...eh, tools, so it doesn't affect me 😉

Translate
Report
Community Expert ,
Jan 11, 2026 Jan 11, 2026
LATEST

Playing devil's advocate... It should be easy enough for the devs to add a confirm prompt to OK before the mode conversion for safety. They could also add a "don't ask again" checkbox so that this becomes seamless.

 

There's probably a good reason that this "obvious feature" doesn't exist.

 

For what it's worth, the following script will conditionally convert a grayscale document to RGB and then bring up the generative fill command (again, a confirm dialog could be added, which would be counter intuitive, as this is the feature request so why put in a road block):

 

/*
Generative Fill with Conditional Grayscale Mode Conversion to RGB.jsx
Stephen Marsh
v1.0 - 12th January 2025: Initial release
https://community.adobe.com/t5/photoshop-ecosystem-ideas/generative-fill-and-grayscale/idi-p/15658612
*/

#target photoshop

    (function () {

        if (app.documents.length === 0) {
            alert("A document must be open to run this script!");
            return;
        }

        var doc = app.activeDocument;

        // Photoshop 2024 is version 25.x
        var psVersion = parseInt(app.version.split(".")[0], 10);
        if (psVersion < 25) {
            alert("Photoshop 2024 or later is required for Generative Fill!");
            return;
        }

        if (doc.mode === DocumentMode.GRAYSCALE) {
            doc.changeMode(ChangeMode.RGB);
        }
        generativeFill();
    })();
    

function generativeFill() {
    var idsyntheticFill = stringIDToTypeID("syntheticFill");
    var desc299 = new ActionDescriptor();
    var idnull = stringIDToTypeID("null");
    var ref20 = new ActionReference();
    var iddocument = stringIDToTypeID("document");
    var idordinal = stringIDToTypeID("ordinal");
    var idtargetEnum = stringIDToTypeID("targetEnum");
    ref20.putEnumerated(iddocument, idordinal, idtargetEnum);
    desc299.putReference(idnull, ref20);
    var iddocumentID = stringIDToTypeID("documentID");
    desc299.putInteger(iddocumentID, 64);
    var idlayerID = stringIDToTypeID("layerID");
    desc299.putInteger(idlayerID, 43);
    var idprompt = stringIDToTypeID("prompt");
    desc299.putString(idprompt, """""");
    var idserviceID = stringIDToTypeID("serviceID");
    desc299.putString(idserviceID, """clio""");
    var idworkflowType = stringIDToTypeID("workflowType");
    var idgenWorkflow = stringIDToTypeID("genWorkflow");
    var idin_painting = stringIDToTypeID("in_painting");
    desc299.putEnumerated(idworkflowType, idgenWorkflow, idin_painting);
    var idserviceOptionsList = stringIDToTypeID("serviceOptionsList");
    var desc300 = new ActionDescriptor();
    var idclio = stringIDToTypeID("clio");
    var desc301 = new ActionDescriptor();
    var idgi_PROMPT = stringIDToTypeID("gi_PROMPT");
    desc301.putString(idgi_PROMPT, """""");
    var idgi_MODE = stringIDToTypeID("gi_MODE");
    desc301.putString(idgi_MODE, """ginp""");
    var idgi_SEED = stringIDToTypeID("gi_SEED");
    desc301.putInteger(idgi_SEED, -1);
    var idgi_NUM_STEPS = stringIDToTypeID("gi_NUM_STEPS");
    desc301.putInteger(idgi_NUM_STEPS, -1);
    var idgi_GUIDANCE = stringIDToTypeID("gi_GUIDANCE");
    desc301.putInteger(idgi_GUIDANCE, 6);
    var idgi_SIMILARITY = stringIDToTypeID("gi_SIMILARITY");
    desc301.putInteger(idgi_SIMILARITY, 0);
    var idgi_CROP = stringIDToTypeID("gi_CROP");
    desc301.putBoolean(idgi_CROP, false);
    var idgi_DILATE = stringIDToTypeID("gi_DILATE");
    desc301.putBoolean(idgi_DILATE, false);
    var idgi_CONTENT_PRESERVE = stringIDToTypeID("gi_CONTENT_PRESERVE");
    desc301.putInteger(idgi_CONTENT_PRESERVE, 0);
    var idgi_ENABLE_PROMPT_FILTER = stringIDToTypeID("gi_ENABLE_PROMPT_FILTER");
    desc301.putBoolean(idgi_ENABLE_PROMPT_FILTER, true);
    var iddualCrop = stringIDToTypeID("dualCrop");
    desc301.putBoolean(iddualCrop, true);
    var idgi_ADVANCED = stringIDToTypeID("gi_ADVANCED");
    desc301.putString(idgi_ADVANCED, """{"enable_mts":true}""");
    var idclio = stringIDToTypeID("clio");
    desc300.putObject(idclio, idclio, desc301);
    var idnull = stringIDToTypeID("null");
    desc299.putObject(idserviceOptionsList, idnull, desc300);
    executeAction(idsyntheticFill, desc299, DialogModes.ALL);

    /*
    // Rasterize the genertaive fill layer
    try {
        var s2t = function (s) {
            return app.stringIDToTypeID(s);
        };
        var descriptor = new ActionDescriptor();
        var reference = new ActionReference();
        reference.putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
        descriptor.putReference(s2t("null"), reference);
        executeAction(s2t("rasterizeLayer"), descriptor, DialogModes.NO);
    } catch (e) { alert(e); }
    */

}

 

Translate
Report