live
MODEL IDideogram:4.5@precise-edit

Ideogram 4.5 Precise Edit

Ideogram
by

Ideogram 4.5 Precise Edit is the precision editing variant of Ideogram 4.5. It applies a natural-language instruction to a source image, optionally limited by a mask and guided by up to four reference images, and restores unchanged pixels from the source so framing, color, and surrounding detail stay intact across many rounds of edits. It keeps the source dimensions and suits retouching, product and color changes, and multi-step design revisions.

Ideogram 4.5 Precise Edit

Text and localization

How to change and translate the text in a finished design with Ideogram 4.5 Precise Edit, from one updated line to the same banner in four languages.

Introduction

A finished ad creative is expensive to change. The price moves or the campaign launches in four more markets, and either one normally means reopening the design file or regenerating the image and hoping it comes back the same.

Ideogram 4.5 Precise Edit edits the words in place. It changes the text you name and restores the rest of the image from the source, so the product shot and the layout stay exactly as approved. The banner below was translated four times, each translation made from the English original.

Switch between the languages. The shoe and the coral button keep their exact place in all five, and only the words change.

This guide covers changing a single line, translating a whole design, protecting brand names, changing a typeface and turning one packshot into a product range.

Changing one line

The smallest text edit is also the most common one: a single line that is out of date. Quote the line as it reads now, quote what it should read, and ask for the same styling.

A fitness studio post with a woman on a cycling bike above a teal panel reading SPIN & SWEAT, Tuesdays · 7:00 AM and Pulse Fitness Studio

A 4:5 social media post for a neighborhood fitness studio. The top half is a bright photograph of a woman riding an indoor cycling bike in a sunlit studio with large windows. The bottom half is a solid deep teal panel with white text: the heading "SPIN & SWEAT" in a bold condensed sans-serif, the line "Tuesdays · 7:00 AM" below it in a medium weight, and "Pulse Fitness Studio" in small letters at the bottom. Clean, modern, high contrast.

OriginalEdited

Drag the slider across the teal panel: only the schedule line was redrawn, in the weight and size it had before. The heading and the studio name do not move, and the photo above is the same frame.

Quoting both versions matters. "Change the day to Thursday" leaves the model to find the day and decide how much of the line to rewrite. Quoting "Tuesdays · 7:00 AM" names the exact text to replace, and quoting the new line spells out every character, including the separator.

Translating a whole design

A translation instruction has three parts, and each one earns its place: the scope ("every piece of text"), the target language, and what the translated text must keep.

Translate every piece of text in the banner into German, keeping the same
typefaces, sizes, colors and layout. Keep the brand name "STRIDE" as it is.
Keep everything else in the image exactly the same.

"Every piece of text" stops the model from translating the headline and leaving the button in English. Asking for the same typefaces and layout makes the translated lines take the place of the originals instead of being set fresh.

Try in Playground
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'ideogram:4.5@precise-edit',
  positivePrompt: 'Translate every piece of text in the banner into German, keeping the same typefaces, sizes, colors and layout. Keep the brand name "STRIDE" as it is. Keep everything else in the image exactly the same.',
  inputs: {
    seedImage: 'c7d2e9a4-1b36-4f58-8e0d-3a9f6b2c5e81'
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "ideogram:4.5@precise-edit",
            "positivePrompt": "Translate every piece of text in the banner into German, keeping the same typefaces, sizes, colors and layout. Keep the brand name \"STRIDE\" as it is. Keep everything else in the image exactly the same.",
            "inputs": {
                "seedImage": "c7d2e9a4-1b36-4f58-8e0d-3a9f6b2c5e81"
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "imageInference",
      "taskUUID": "9e4a1c7b-2d58-4f06-b3e9-5a8c0d2f6b17",
      "model": "ideogram:4.5@precise-edit",
      "positivePrompt": "Translate every piece of text in the banner into German, keeping the same typefaces, sizes, colors and layout. Keep the brand name \"STRIDE\" as it is. Keep everything else in the image exactly the same.",
      "inputs": {
        "seedImage": "c7d2e9a4-1b36-4f58-8e0d-3a9f6b2c5e81"
      }
    }
  ]'
runware run ideogram:4.5@precise-edit \
  positivePrompt="Translate every piece of text in the banner into German, keeping the same typefaces, sizes, colors and layout. Keep the brand name \"STRIDE\" as it is. Keep everything else in the image exactly the same." \
  inputs.seedImage=c7d2e9a4-1b36-4f58-8e0d-3a9f6b2c5e81
{
  "taskType": "imageInference",
  "taskUUID": "9e4a1c7b-2d58-4f06-b3e9-5a8c0d2f6b17",
  "model": "ideogram:4.5@precise-edit",
  "positivePrompt": "Translate every piece of text in the banner into German, keeping the same typefaces, sizes, colors and layout. Keep the brand name \"STRIDE\" as it is. Keep everything else in the image exactly the same.",
  "inputs": {
    "seedImage": "c7d2e9a4-1b36-4f58-8e0d-3a9f6b2c5e81"
  }
}
Response
[
  {
    "taskType": "imageInference",
    "taskUUID": "9e4a1c7b-2d58-4f06-b3e9-5a8c0d2f6b17",
    "imageUUID": "2b8f5d1e-7c49-4a03-9f6e-1d4a8c7b3e52",
    "imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/2b8f5d1e-7c49-4a03-9f6e-1d4a8c7b3e52.jpg"
  }
]

Translate from the original, never from the previous translation. Every version in the swapper above has the English banner as its inputs.seedImage. Chaining English to French to German stacks two rounds of rewording on the German copy, and any line the French round set slightly differently becomes the starting point for the next one.

German runs longer than English, and the German banner shows how the model handles it: the headline still breaks onto two lines in the same place, and the longer offer line simply runs a little wider at the same size. Check long compound words anyway, since a line with nowhere to grow may wrap or shrink.

Protecting brand names

A wordmark is text, and "every piece of text" includes it. Name anything that must stay as written: brand names, product names, trademarks and handles.

Without the clause, the wordmark was transliterated along with everything else. With it, STRIDE stays in Latin capitals while the rest of the copy moves to Japanese. One sentence in the instruction is cheaper than a round of corrections.

Changing the typeface

The same technique changes how text looks without changing what it says. Describe the typeface by its traits: width, weight and whether it has serifs.

The original banner with the headline set in a bold geometric sans-serif

A 16:9 e-commerce web banner for a running shoe brand. On the right half, a single coral and white running shoe floating at a slight angle above a soft shadow on a pale sand-colored background. On the left half, stacked text in dark charcoal: the brand wordmark "STRIDE" in small bold capitals at the top, the headline "Run the city." in a large bold geometric sans-serif, the line "Up to 30% off the spring collection" below it in a smaller regular weight, and a rounded coral button with the white label "Shop now". Clean flat studio lighting, generous margins, modern minimal layout.

OriginalNew headline typeface

Only the headline changed style. The offer line and the button keep the original sans-serif, because the instruction named one line by its exact text and restoration returned the rest.

Turning one packshot into a range

Packaging text changes the same way, and a label edit can bring a color change along with it. That is how one approved packshot becomes a product range: the can and the condensation stay, and only the flavor changes.

A white sparkling water can with a lime green band reading LIME, and CLEARBROOK near the top, on a wet gray stone surface

Commercial product photograph of a single slim aluminum can of sparkling water standing on a wet light gray stone surface with scattered water droplets, against a soft light gray background. The can is white with a wide lime green band around the middle, the brand name "CLEARBROOK" in small navy capitals near the top, and the flavor "LIME" in large bold navy letters on the green band. Crisp studio light, realistic condensation on the can, the can centered.

LimeGrapefruit

The droplets on the stone are the ones from the original shot. A range built this way matches across every flavor, which is what a product listing page needs when the variants sit side by side.

Tips

  1. Quote the old text and the new text. Quoting both tells the model exactly what to replace and spells out every character of the replacement.

  2. Translate from the original. Each language starts from the approved source, not from another translation.

  3. Name what must not change. Brand names, product names, trademarks and handles need a clause of their own.

  4. Describe typefaces by their traits. Width, weight and serif style are what the model can act on.

  5. Proofread every result. Check each word before it ships, and have a native speaker check languages you cannot read yourself.

To design the original banner or post, see Text and design for Ideogram 4.5.