| # Nano Banana custom block 🍌 |
|
|
| ## How to use |
|
|
| Use the following code to use the block standalone: |
|
|
| ```py |
| from diffusers.modular_pipelines import ModularPipelineBlocks |
| |
| banana_block = ModularPipelineBlocks.from_pretrained( |
| "diffusers-internal-dev/nano-banana-modular", |
| trust_remote_code=True, |
| ) |
| banana = banana_block.init_pipeline() |
| output = banana( |
| prompt="Create a picture of my cat eating a nano-banana in a fancy restaurant under the Gemini constellation" |
| ) |
| print(f"{output.values['output_image'].size=}") |
| output.values["output_image"].save("generated_banana.png") |
| ``` |
|
|
| Result: |
|
|
|  |
|
|
| It accepts an image argument, too: |
|
|
| ```py |
| from diffusers.modular_pipelines import ModularPipelineBlocks |
| from diffusers.utils import load_image |
| |
| banana_block = ModularPipelineBlocks.from_pretrained( |
| "diffusers-internal-dev/nano-banana-modular", |
| trust_remote_code=True, |
| ) |
| banana = banana_block.init_pipeline() |
| output = banana( |
| prompt="Make Pikachu hold a sign that says 'Qwen Edit is awesome'", |
| image=load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png") |
| ) |
| print(f"{output.values['output_image'].size=}") |
| output.values["output_image"].save("edited_banana.png") |
| ``` |
|
|
| Result: |
|
|
| | Original | Edited | |
| |---|---| |
| |  |  | |
|
|
| ### Misc |
|
|
| * Nano Banana: https://ai.google.dev/gemini-api/docs/image-generation |