apple / ml-stable-diffusion

Stable Diffusion with Core ML on Apple Silicon
MIT License
16.79k stars 935 forks source link

Long prompts fail due to exceeding filename length limit (255 chars) #48

Open kerryrm opened 1 year ago

kerryrm commented 1 year ago

filename should be truncated to 255 chars before saving. (in func imageName)

CheneyLin commented 1 year ago

I fixed it by code Filename : ml-stable-diffusion/python_coreml_stable_diffusion/pipeline.py Function : get_image_path LineNo : 524

def get_image_path(args, **override_kwargs):
    """ mkdir output folder and encode metadata in the filename
    """
    out_folder = "_".join(args.prompt.replace("/", "_").rsplit(" "))
    out_folder = out_folder[0:32] + str(random.randint(1000, 9999))
    out_folder = os.path.join(args.o, out_folder)
    os.makedirs(out_folder, exist_ok=True)

    out_fname = f"randomSeed_{override_kwargs.get('seed', None) or args.seed}"
    out_fname += f"_computeUnit_{override_kwargs.get('compute_unit', None) or args.compute_unit}"
    out_fname += f"_modelVersion_{override_kwargs.get('model_version', None) or args.model_version.replace('/', '_')}"
    out_fname = out_fname[0:32]
    if args.scheduler is not None:
        out_fname += f"_customScheduler_{override_kwargs.get('scheduler', None) or args.scheduler}"
        out_fname += f"_numInferenceSteps{override_kwargs.get('num_inference_steps', None) or args.num_inference_steps}"

    return os.path.join(out_folder, out_fname + ".png")