This massive 4096×4096 px image was created with Midjourney—without any upscaling—using a technique I call ”super-tiling,” which combines tiling with inpainting. How does this work? First, some background.
Let’s say you want to create “Where’s Waldo?”-like artwork: intricate, detailed, expansive, and with a hand-drawn look. After trial and error, you might wind up with this prompt, and 1024×1024 image:
This is decent, but how could we make it more detailed and more expansive? We might try the
button.
However, if you look closely, you can see that the expanded art looks slightly different from the square in the center—the original image. Furthermore, at unchanged 1024×1024, this has reduced the resolution of the original image at center, which is the opposite of what we really want.
Similarly, if you try using outpainting (the four bottom buttons:
), though resolution is preserved, the new outpainted areas tend to have slightly different styles.
So let’s try tiling! Using the same original prompt and adding the --tile parameter, here’s what we might get (displayed in tiled fashion):
Now we’re getting into “Where’s Waldo?”-like territory! However, it’s clear at a glance that this is a tiled image. The distinctive hook-shaped inlet in the center of each tile is particularly obvious. Ah-ha: what if we use inpainting to change the inlet?
To do this, we click on the
button.
ⓘ Note you may need to use a desktop browser to use this feature.
This brings up the Midjourney editor window. We then click the rectangular selection button in the lower left, and click & drag a box over the inlet. (The upper left
button is Undo, if needed).
We leave the prompt as-is, and press the arrow to the right of the prompt to proceed. Here is the generated result:
It worked!—and MJ has conveniently pre-assembled 4 variations into a larger tile (which we can save directly if we want)! All the inlets are changed, and the images still work as tiles, since we didn’t change any of the outer edges. It’s less obvious that it’s a tiled image now, but there are still some things which give it away, such as the red raft with the orange & yellow umbrella:
What if we inpaint this away as well?
Let’s go back to the original result, hit the
again, and this time, draw a box not only over the inlet, but over the red raft.
ⓘ Note: in some browsers, the previous box we drew will already be visible, so we can just add the new box.
But wait—see that big red umbrella at right center? That’s pretty noticeable as well. Let’s back up: press the
Undo twice. Now let’s drag a box over the *whole middle* of our image—why not? Let’s leave the outer edges alone, so our image will still be tileable:
Success! Here we have the detail and size we want, and importantly, it doesn’t look obviously tiled—it looks like a single 2048×2048 px image.
Compared with our original tile, we’ve effectively doubled the detail/resolution. Furthermore, this large image is itself tileable—and hence the name...
Here are more examples, comparing original small tiles with inpainted larger super-tiles:
Create a tileable image using --tile parameter.
Use
to inpaint the interior, leaving the outer edges alone.
What we have done so far is to inpaint the center of a tile, leaving its outer edges tileable—highlighted here in green:
So long as we preserve its orientation, we can combine any number of these tiles in any configuration:
But let’s say we want to tile ONLY in certain directions—like making a wide panorama. Instead of inpainting the center, and preserving ALL the outer edges, technically we only need to preserve the edges that will connect to other tiles—in this case, the left and right edges, as such:
Here’s an example: let’s make a Super Mario Bros.-inspired panorama! Here, after many rerolls, is good starting image, with 2 copies tiled horizontally. It would be nice if the --tile parameter had vertical/horizontal-only options, but alas…
And here’s how we’ll use
, inpainting everything except the left and right edges:
As you can see, the images successfully tile horizontally, but the style and perspective and scale all change too much!
To remedy this, let’s repeat the inpainting, but this time, preserve some bits and pieces here and there, to give MJ more clues about the style we want to preserve:
And the result:
Much better! There are still some odd bits here, but if we select 2 of these, clean them up a bit outside of MJ, and combine them with the original tile, we can get the final Mario panorama below. Some of the details we preserved noticeably repeat, but it’s pretty darn good.
As you can see, it's an effective method for adjusting the 'sharpness' in your image and taming styles (whether tuned or not) that tend to be excessively detailed.
For this test, I selected eight style directions from the set, aiming for more illustrative images, even though most were quite far from Miyazaki’s distinctive style:
Here are the results of applying this surprisingly consistent style to some of the benchmark prompts:
We can do the same thing but in a vertical direction to make very tall images. Namely, we inpaint everything except the top and bottom edges, as such:
Let’s say we want to make a semi-dystopian stack of mobile trailer homes:
It won’t do to have multiple mountain horizons in our vertical panorama, but we’ll inpaint that area out anyway. Let’s leave some of the pink/purple sky untouched, so MJ isn’t tempted to inpaint additional trailers floating in the sky. Here’s how we can draw the selection boxes in
.
And here’s one possible result, after assembling:
One note for generating ‘tall stacks of stuff’-type tileable images: because of the way the --tile mechanism works, oftentimes MJ will give you results that are shifted relative to what you want, such as this:
Fortunately, it’s pretty easy, in any graphics editor, to manually copy and paste and realign the image as you like, such as in this case, where the image has been duplicated and shifted horizontally by 570 pixels:
However, this complicates the inpainting step of super-tiling, because we can only inpaint the original version that MJ outputted directly, NOT our fixed version—and therefore we now must preserve the left and right edges, so we can still shift and correct the variations it will give us. Here is how we might use
here, again saving some areas of sky and cloud to make sure nothing is inserted there:
Our raw output will resemble this:
Which can be shifted over and assembled as such:
Create a tileable image using --tile parameter.
Based on how the tiles will be assembled, determine which inpainting patterns will be needed. Preserve edges where tiles connect with each other.
Use
to inpaint everything except the left and right edges (for a panorama), or the top and bottom edges (for a tall image).
Omit certain bits from inpainting if needed to preserve style/scale/etc.
In the sections above, we have used the following patterns for making tiles. Again, the green represents edges we have NOT inpainted—the edges we can join together:
If we wanted to make 2048×2048 px square artwork, we could of course use 4 general-purpose tiles:
Here is one example original tile, and the result after inpainting:
As intended, the 4 resulting tiles are quite different, except for their outer edges. But what if something on those outer edges bothers us? Such as, let’s say, these white stairs at the upper-right of each tile:
Well, we said before that we need to preserve only those edges that connect with other tiles. Technically, in this 2x2 super-tile, we could reduce our preserved green edges to only these below, eliminating 2 of 4 of those white stairs:
Four different inpainting patterns would require using
four times.
This would eliminate the ability of the final image to function as a super-tile (to be tileable itself).
If we go ahead and use
four times, making one batch of upper-left tiles, one of upper-right tiles, and so forth, and then choose our favorite tile from each batch, and finally assemble them, we can get:
This has noticeably more internal variation than the original, and no more white stairs at the very top.
Of course, if we’re going to make four batches of inpainted variations, we could also change the inpainting prompt! We could make a quadriptych of the four seasons:
On a different note, why stop at a 2×2 square? Let’s try 3×3:
Of course, this would require nine batches of inpainting if we want maximum variation! But let’s look at the difference between a assembly of a Standard tile, vs. an assembly made according to the above pattern using Super-Tile:
The first looks like a tiled image, while the second looks like a super-detailed 3072×3072 px image! Here are some more examples with maximum variation:
These extra steps to yield maximum variation do take considerably more time and effort than the simple center-inpainting approach, but perhaps there are occasions when it is worthwhile: making large poster-prints, video game maps, and many, many other applications.
Create a tileable image using --tile parameter.
Based on how the tiles will be assembled, determine which inpainting patterns will be needed. Preserve edges where tiles connect with each other.
Use
to generate tiles of each pattern needed.
Omit certain bits from inpainting if needed to preserve style/scale/etc.
Super-Tiling—tiling plus inpainting—is a powerful combination, and with some experimentation, it can let you expand the size and shape and detail of what you create with Midjourney.
Give it a try yourself—happy experimenting!
— Gordon Au (aka WorldOfDepth)
If you like our guides and studies, please, consider supporting us. It's thanks to our Patrons that we are able to maintain and develop Midlibrary, create better educational content, and keep it free for all!
Midlibrary Catalog grows largely through the contributions of our Community.
Thank you for taking time to share your suggestion!
We do our best to keep this website running as smoothly as possible.
However, stuff happens. Thank you for letting us know about it!
Every week we publish a new Midjourney study and a new Editor's Pick.
Receive our newsletter to never miss an important Midlibrary update!