How to Generate Same AI Images with JSON Context Profiles


Consistently generating images with the same style, layout, and subject placement has always been a challenge with AI tools. Prompts can only go so far, and results often vary with each attempt.

A new technique offers a more reliable solution in just two steps:

  1. Describe your image using an Advanced JSON Context Profile
  2. Use that JSON profile as the basis for image generation

What is an Advanced JSON Context Profile?

An Advanced JSON Context Profile (or AJCP) is a loosely structured blueprint for the image you want to create. It captures key attributes like style, subject matter, environment, composition details, and more in a single JSON object. Passing this profile to the model sets a clear contract for what the output should be.

Compared with free‑form prompts, a JSON profile removes much of the ambiguity and tends to produce results that are easier to reproduce.

There is no defined schema, and the format isn’t an official standard, but it loosely echoes JSON‑LD conventions.

How to generate an Advanced JSON Context Profile?

We can pre-generate this “blueprint” by feeding an image to the model. Use the following prompt to generate JSON:

Give me an Advanced JSON Context Profile for this image (with image attachment)

This will give you a JSON containing a detailed description of the image you’re feeding. It will contain properties like file name, format, dimension, colors, brightness, content tags, subject guesses, subject positioning, camera settings estimations, symbolic interpretations, motifs, cultural contexts, and many more “guesses” as seen by the LLM engine.

How to generate the image from the Advanced JSON Context Profile?

Once we have this JSON description, we simply paste it into our second prompt to generate the image.

Generate image using this Advanced JSON Context Profile: (paste your JSON)

Experiments

I ran a few experiments to see how accurate and similar the generated images were:

  1. Generate a realistic animal
  2. Replicate a famous artwork
  3. Reproduce a lesser-known artist’s work
  4. Duplicate a previously unpublished image

Experiment 1: Generate a Realistic Animal

First, I tried generating a rabbit using an image from Wikimedia.

Here is the JSON profile for the rabbit image

  {
    "file": "3F5B7E25-9907-4415-8DFB-BAAED74AF9AD.png",
    "format": "PNG",
    "mode": "RGB",
    "dimensions": {
        "width": 250,
        "height": 310
    },
    "aspect_ratio": 0.806,
    "file_size_bytes": 170256,
    "average_color": {
        "rgb": [107, 104, 82],
        "hex": "#6b6852"
    },
    "brightness": {
        "value": 0.404,
        "descriptor": "balanced"
    },
    "dominant_colors": [
        { "rgb": [99, 86, 77],  "hex": "#63564d", "percentage": 16.38 },
        { "rgb": [133, 119, 106], "hex": "#85776a", "percentage": 15.13 },
        { "rgb": [72, 75, 47],  "hex": "#484b2f", "percentage": 13.69 },
        { "rgb": [58, 53, 40],  "hex": "#3a3528", "percentage": 12.64 },
        { "rgb": [146, 150, 108], "hex": "#92966c", "percentage": 11.90 }
    ],
    "content_tags": [
        "rabbit",
        "animal",
        "bunny",
        "fur",
        "wildlife",
        "forest floor",
        "brown",
        "cute"
    ],
    "estimated_species": "European rabbit (Oryctolagus cuniculus)",
    "subject_orientation": "frontal, slight left-facing",
    "camera_context": {
        "depth_of_field": "moderate (sharp on subject, blurred background)",
        "lighting": "natural daylight",
        "location_type": "woodland or forest edge"
    }
  }
  

Then I tried changing up some parameters to see how much granular control I have. I changed camera_context.lighting from natural daylight to natural moonlight.

Interestingly, all other variables remain the same, but only the lighting is updated. It seems possible to fine-tune your images with selective prompting using the Advanced JSON Context Profile.

Experiment 2: Replicate a famous artwork

Now let’s try to recreate some famous art pieces. I’m a fan of Salvador Dalí.

I realized there might be a context leak, and ChatGPT may be using my previously uploaded image as input. I tried generating it in a separate chat as well as in the same chat thread.

Advanced JSON Context Profile for “The Persistence of Memory” by Salvador Dalí

    {
      "file": "FBA6CA3C-1E42-4935-A14F-DA845A5B1577.png",
      "format": "PNG",
      "mode": "RGB",
      "dimensions": {
        "width": 640,
        "height": 483
      },
      "aspect_ratio": 1.325,
      "file_size_estimate_bytes": 180000,
      "average_color": {
        "rgb": [82, 72, 52],
        "hex": "#524834"
      },
      "brightness": {
        "value": 0.42,
        "descriptor": "low contrast with localized highlights"
      },
      "dominant_colors": [
        { "hex": "#c2aa5e", "rgb": [194, 170, 94], "percentage": 21.4 },
        { "hex": "#3c2e1e", "rgb": [60, 46, 30], "percentage": 18.6 },
        { "hex": "#87b4d6", "rgb": [135, 180, 214], "percentage": 14.2 },
        { "hex": "#b1c0d0", "rgb": [177, 192, 208], "percentage": 10.8 },
        { "hex": "#e6e2cf", "rgb": [230, 226, 207], "percentage": 8.1 }
      ],
      "content_tags": [
        "melting clocks",
        "surrealism",
        "dream-like",
        "time distortion",
        "barren landscape",
        "Dalí",
        "decay",
        "symbolism",
        "softness vs. rigidity",
        "fine art",
        "liminal space",
        "visual paradox"
      ],
      "artist_estimate": "Salvador Dalí",
      "art_style": "Surrealism",
      "subject_description": {
        "foreground": [
          "a tree branch with a melting pocket watch",
          "a rectangular platform with two drooping clocks",
          "an abstract fleshy form with a closed eye and timepiece on top"
        ],
        "background": [
          "a coastal cliff with golden lighting",
          "still, dark water suggesting a reflective surface",
          "gradient sky transitioning from deep blue to yellow"
        ]
      },
      "symbolic_interpretation": {
        "theme": "The relativity and fluidity of time",
        "motifs": [
          "melting clocks suggest decay of structured time",
          "desolate environment evokes dream or subconscious",
          "flesh-like central form possibly represents the artist’s face or ego"
        ]
      },
      "camera_context": {
        "digital_capture": true,
        "lighting": "even, high-contrast reproduction",
        "source": "art archive or wiki reproduction"
      },
      "metadata_notes": "This painting is widely believed to critique the rigidity of time and logic, reflecting Freudian themes and the influence of Einsteinian relativity."
    }
  

The output is surprisingly similar, with some minor differences. The key differences I see are:

  1. Missing copyright notice, along with the watermark
  2. Clock hands are misaligned
  3. Extra rock present on the ground

What’s interesting is that the tree branches are in the same location pointing in the same direction. The macro features are well-aligned, and that might not be surprising when you look into the JSON in detail.

It describes the art_style as Surrealism, artist_estimate as Salvador Dalí, and motifs as melting clocks and desolate environment evokes dream or subconscious. I think if I were to describe this to an art student, they would be able to draw something similar for me. Dalí is well-known globally, so there’s enough material out there for DALL-E (Dalí?? 😉) to be trained on. Let’s try out a lesser-known artist.

Experiment 3: Reproduce a Lesser-Known Artist’s Work

Take Maria Prymachenko, for example. She’s recognized enough that Pablo Picasso once saidI bow down before the artistic miracle of this brilliant Ukrainian.” But I’m also fairly certain your average art student wouldn’t know what her work looks like.

It’s also worth mentioning that russians burned down around 25 pieces of Maria Prymachenko’s work along with 400 others hosted at the Ivankiv Museum in Kyiv during the beginning of the full-scale invasion in 2022.

Advanced JSON Context Profile for “A Dove Has Spread Her Wings and Asks for Peace” by Maria Prymachenko

  {
    "file": "15F22644-05FA-4A5B-BF5D-3F2DD7FB0E52.jpeg",
    "format": "JPEG",
    "mode": "RGB",
    "dimensions": {
      "width": 1069,
      "height": 768
    },
    "aspect_ratio": 1.392,
    "file_size_estimate_bytes": 680000,
    "average_color": {
      "rgb": [240, 204, 70],
      "hex": "#f0cc46"
    },
    "brightness": {
      "value": 0.85,
      "descriptor": "bright and high contrast"
    },
    "dominant_colors": [
      { "hex": "#f0cc46", "rgb": [240, 204, 70], "percentage": 42.8 },
      { "hex": "#f13030", "rgb": [241, 48, 48], "percentage": 25.4 },
      { "hex": "#ffffff", "rgb": [255, 255, 255], "percentage": 13.2 },
      { "hex": "#1073c8", "rgb": [16, 115, 200], "percentage": 11.6 },
      { "hex": "#3c9642", "rgb": [60, 150, 66], "percentage": 7.0 }
    ],
    "content_tags": [
      "folk art",
      "bird",
      "dove",
      "flowers",
      "symmetry",
      "embroidery patterns",
      "Ukrainian art",
      "vibrant",
      "naïve style",
      "symbolism",
      "peace",
      "nature"
    ],
    "subject_description": {
      "foreground": [
        "large white stylized bird with blue geometric and floral embroidery-like patterns",
        "bird wings outstretched symmetrically"
      ],
      "background": [
        "yellow canvas filled with large red flowers and green leaves",
        "highly stylized sun-like motifs at flower centers"
      ]
    },
    "symbolic_interpretation": {
      "theme": "peace and cultural identity",
      "motifs": [
        "dove as a universal symbol of peace",
        "embroidered motifs represent national heritage, likely Ukrainian or Eastern European",
        "floral patterns signify life, growth, and seasonal cycles"
      ]
    },
    "composition_notes": {
      "focus": "central bird, occupying majority of frame",
      "symmetry": "strong bilateral symmetry",
      "color balance": "vibrant primary colors—blue, red, yellow—contrast sharply",
      "mood": "celebratory, folkloric, hopeful"
    },
    "art_style": "Petrykivka / Slavic folk art",
    "cultural_context": {
      "origin": "Ukraine (or broadly Eastern European)",
      "use": "may be used in decorative arts, textiles, national symbolism, or children’s literature"
    },
    "camera_context": {
      "capture_type": "scanned or digitally photographed illustration",
      "lighting": "even and artificial",
      "purpose": "documentation or archiving of cultural artwork"
    },
    "metadata_notes": "This work reflects traditional Ukrainian folk motifs in a modern stylized composition, combining symbolic imagery with textile-like design. The presence of the dove suggests themes of national peace and cultural pride."
  }
  

We notice that by using the same chat thread to get the Advanced JSON Context Profile together with generating images will give almost identical images. For lesser-known artists, there doesn’t seem to be enough training data to produce exactly the same image. I wonder if this is because there’s no mention of Maria Prymachenko in the context file (unlike we saw with Dalí).

Let’s try adding artist_estimate ourselves.

Advanced JSON Context Profile for “A Dove Has Spread Her Wings and Asks for Peace” by Maria Prymachenko with artist_estimate

  {
    "file": "15F22644-05FA-4A5B-BF5D-3F2DD7FB0E52.jpeg",
    "format": "JPEG",
    "mode": "RGB",
    "dimensions": {
      "width": 1069,
      "height": 768
    },
    "aspect_ratio": 1.392,
    "file_size_estimate_bytes": 680000,
    "average_color": {
      "rgb": [240, 204, 70],
      "hex": "#f0cc46"
    },
    "brightness": {
      "value": 0.85,
      "descriptor": "bright and high contrast"
    },
    "dominant_colors": [
      { "hex": "#f0cc46", "rgb": [240, 204, 70], "percentage": 42.8 },
      { "hex": "#f13030", "rgb": [241, 48, 48], "percentage": 25.4 },
      { "hex": "#ffffff", "rgb": [255, 255, 255], "percentage": 13.2 },
      { "hex": "#1073c8", "rgb": [16, 115, 200], "percentage": 11.6 },
      { "hex": "#3c9642", "rgb": [60, 150, 66], "percentage": 7.0 }
    ],
    "content_tags": [
      "folk art",
      "bird",
      "dove",
      "flowers",
      "symmetry",
      "embroidery patterns",
      "Ukrainian art",
      "vibrant",
      "naïve style",
      "symbolism",
      "peace",
      "nature"
    ],
    "artist_estimate": "Maria Prymachenko",
    "subject_description": {
      "foreground": [
        "large white stylized bird with blue geometric and floral embroidery-like patterns",
        "bird wings outstretched symmetrically"
      ],
      "background": [
        "yellow canvas filled with large red flowers and green leaves",
        "highly stylized sun-like motifs at flower centers"
      ]
    },
    "symbolic_interpretation": {
      "theme": "peace and cultural identity",
      "motifs": [
        "dove as a universal symbol of peace",
        "embroidered motifs represent national heritage, likely Ukrainian or Eastern European",
        "floral patterns signify life, growth, and seasonal cycles"
      ]
    },
    "composition_notes": {
      "focus": "central bird, occupying majority of frame",
      "symmetry": "strong bilateral symmetry",
      "color balance": "vibrant primary colors—blue, red, yellow—contrast sharply",
      "mood": "celebratory, folkloric, hopeful"
    },
    "art_style": "Petrykivka / Slavic folk art",
    "cultural_context": {
      "origin": "Ukraine (or broadly Eastern European)",
      "use": "may be used in decorative arts, textiles, national symbolism, or children’s literature"
    },
    "camera_context": {
      "capture_type": "scanned or digitally photographed illustration",
      "lighting": "even and artificial",
      "purpose": "documentation or archiving of cultural artwork"
    },
    "metadata_notes": "This work reflects traditional Ukrainian folk motifs in a modern stylized composition, combining symbolic imagery with textile-like design. The presence of the dove suggests themes of national peace and cultural pride."
  }
  

As expected, we’re able to generate an image that’s a little bit closer to the original. This gives us ability to analyse, then refine outputs by giving more context.

Experiment 4: Duplicate a Previously Unpublished Image

So far, I’ve tried generating images using those that already exist online – everything that would be available for training by OpenAI. Let’s see what results we get when using previously unpublished images.

Tserkva Na Vodi is what’s left of what once was a village called Husyntsi. This church was originally built by a local landlord in 1822. It stood on top of a hill until the Soviets decided to construct the Kaniv Reservoir and raise the water levels starting in 1971, which turned a hill into an island while flooding and destroying 20 villages in the process. Water levels came up to about 1-2 meters above the ground level of the church, but later had to be lowered to their current levels due to “technical reasons.” Thankfully, this 200-year-old church has been renovated and is actively being used by the locals. It’s a lesser-known tourist attraction; one of my favorite places in Ukraine.

Advanced JSON Context Profile for a church in what once was a village called Husyntsi

  {
    "file": "IMG_7827.jpg",
    "format": "JPEG",
    "mode": "RGB",
    "dimensions": {
      "width": 1024,
      "height": 768
    },
    "aspect_ratio": 1.333,
    "file_size_estimate_bytes": 650000,
    "average_color": {
      "rgb": [122, 162, 205],
      "hex": "#7aa2cd"
    },
    "brightness": {
      "value": 0.78,
      "descriptor": "bright and clear daylight"
    },
    "dominant_colors": [
      { "hex": "#87ceeb", "rgb": [135, 206, 235], "percentage": 34.2 },
      { "hex": "#fefefe", "rgb": [254, 254, 254], "percentage": 20.5 },
      { "hex": "#ffd700", "rgb": [255, 215, 0], "percentage": 15.3 },
      { "hex": "#008080", "rgb": [0, 128, 128], "percentage": 12.6 },
      { "hex": "#1f1b16", "rgb": [31, 27, 22], "percentage": 8.4 }
    ],
    "content_tags": [
      "church",
      "bell tower",
      "river",
      "Ukrainian flag",
      "orthodox architecture",
      "golden dome",
      "reflection",
      "outdoor",
      "pilgrimage",
      "religious site",
      "sky",
      "nature"
    ],
    "subject_description": {
      "foreground": [
        "Ukrainian flag waving from a boat or dock",
        "blue and yellow flagpole occupying left side of the frame"
      ],
      "midground": [
        "bell tower with golden dome and religious iconography",
        "white church with golden dome and icons above entrance",
        "group of people near the shore"
      ],
      "background": [
        "grassy shoreline with trees",
        "clear blue sky with no clouds"
      ]
    },
    "symbolic_interpretation": {
      "theme": "spiritual heritage and national pride",
      "motifs": [
        "Ukrainian flag symbolizes national identity and sovereignty",
        "golden domes denote religious significance and tradition",
        "peaceful water and sky reflect tranquility and harmony"
      ]
    },
    "composition_notes": {
      "focus": "flag in foreground, church and bell tower balanced in mid-frame",
      "depth": "clear layering from flag to architecture to landscape",
      "lighting": "strong natural light, morning or afternoon sun",
      "mood": "serene, patriotic, sacred"
    },
    "camera_context": {
      "device_estimate": "mobile phone camera (modern iPhone or equivalent)",
      "lens_type": "wide-angle",
      "orientation": "landscape",
      "lighting": "natural daylight",
      "capture_type": "travel or cultural documentation"
    },
    "location_estimate": {
      "country": "Ukraine",
      "setting": "riverside religious complex, possibly a pilgrimage site or monastery"
    },
    "metadata_notes": "This image captures a tranquil yet patriotic moment, juxtaposing the national flag with iconic religious structures. The architectural and environmental clarity suggest a moment of cultural reverence."
  }
  

Again, the devil’s in the details. The image does look like it is AI generated. There aren’t too many imperfection, but perhaps there is a way phrase the prompt better to generate something better. Let me know if you have a good prompt for this.

Notice the tower on the left – both of the generated iamges have 4 stories. I wonder if this is because the Bell tower of Saint Sophia’s Cathedral is well-photographed and has 4 floors. JSON doesn’t mention anyhting about the number of floors.

Conclusion

It is possible to reproduce images by generating Advanced JSON Context Profiles. You can also adjust an image by modifying properties through adding or editing the original JSON.

There is great variability in the output based on how well-known the subject is and the availability of sample data.

The implications are quite serious – there is a growing number of imposter blogs that simply steal original content from various authors and pass it through LLMs to “paraphrase” text. Finding this kind of plagiarism was difficult, but not impossible. These thieves left some trails by lightly cropping images, and there are services that can monitor this image theft. With the Advanced JSON Context Profile approach, this detection becomes more difficult, and generated images seem more natural.

I think we will see a larger number of fake blogs trying to steal traffic from genuine creators, and this will become a cat-and-mouse game for platforms to moderate. Perhaps this is another shortcut to the Dead Internet.

I’m not too familiar with how image searches work, but I understand that some form of vectors are generated. Using the Advanced JSON Context Profile as an encoder could be an interesting implementation for similar image search — instead of running your own algorithm for image recognition, generate the Advanced JSON Context Profile, then retrieving entries based on vector proximity search. We could have an image search engine that will let you search for images using an image, as well as text. I’m sure such things already exist, but drop me a message if you’re an expert on that.

Next Steps + Further Questions

  1. I only used ChatGPT (DALL-E) to generate the JSON and images. It’d be interesting to see what would happen if you were to cross the boundary between different providers/models.
  2. Does this technique work when using the API, or only with the ChatGPT interface?
  3. How does the image evolve if you were to generate the Advanced JSON Context Profile after generating an image? Will the profile stay consistent? How would the images change if you were to chain them?
  4. Are there any specialized technologies to embed the Advanced JSON Context Profile into the image? Maybe Adobe and others already do that?
  5. How did this approach surface to begin with? Does OpenAI internally have a way to represent images and this came to be known?
  6. Is there a defined schema, or at least a guideline for generating it consistently? (A variation of JSON-LD?)
  7. It would be interesting to see a tool that parameterizes the options found in the JSON to provide a better interface for generating more accurate images.

FindWise AI

I’m actively working on FindWise, AI Chat Button for your Website. It instantly answers questions using your existing content, so your visitors always get accurate, helpful responses without the hassle of setting up a traditional chatbot.

Make sure to reach out if you’re looking for ways to modernize your company operations or a website with AI by letting your customers and employees get answers they need with no effort; FindWise can help you with that.