What I Want My Mummy Actually Is

It is a Python package that takes a standard image file and converts it into a grid of emoji characters you can copy-paste into Discord, Slack, or Twitter. The library was created by a developer going by the username thivms, and it works by mapping pixel brightness values to a preset palette of roughly 200 emoji characters, ranging from plain white squares to dark symbols and everything in between. I found this tool while trying to generate profile pictures for a community server without relying on a third-party image hosting service. Embedding actual images in Discord can look fine, but they do not render consistently across clients, and they take up significantly more bandwidth. Text-based emoji art at least displays everywhere, even on mobile apps with broken image embeds.

I Want My Mummy: The Basic Workflow

The core function is called iwmm, short for I Want My Mummy. You pass it an image path and a set of arguments for resolution and color mode, and it spits out a string. Here is a minimal working example: pip install iwmm from iwmm import iwmm

iwmm("photo.png", width=50, grayscale=False) The width parameter controls how many emoji columns the output will contain. Lower numbers like 30 or 40 produce results that are readable on mobile devices. Numbers above 60 tend to get cut off by Discord's character limits or just look like a wall of noise at typical screen resolutions. The grayscale flag, when set to False, preserves the original colors from your image by mapping each pixel's RGB values to the nearest emoji in the library's full palette. Set it to True and you get a monochrome version, which is usually cleaner but sacrifices a lot of detail.

Get the Full Details

I Want My Mummy | ABC For Kids Wiki | Fandom
I Want My Mummy | ABC For Kids Wiki | Fandom

Resolution and Aspect Ratio

The aspect ratio matters more than most people realize. Emoji characters are roughly square, but the visual weight of each emoji varies because some are solid blocks and others are sparse symbols. A 100-pixel-wide photo converted at a 50-emoji width will compress too aggressively and lose detail. I have found that keeping a ratio of about two output emoji per input pixel works well for standard rectangular images. If you are working with a wide landscape photo, you need to increase the width argument proportionally, or crop the source image to a square before processing. There is also a resize argument you can set to False if you want to control the dimensions yourself through PIL before passing the image in. This gives you more predictable results.

Handling Edge Cases

One issue that trips people up is transparent or semi-transparent PNGs. If you feed a transparent image directly into iwmm, the library will often render the transparency as black emoji because the alpha channel gets interpreted as zero brightness across the board. The workaround I use is to composite the image onto a solid background before conversion. Here is what that looks like: from PIL import Image img = Image.open("input.png")

background = Image.new("RGB", img.size, (255, 255, 255)) background.paste(img, mask=img.split()[3]) iwmm(background, width=45)

I Want My Mummy | ABC For Kids Wiki | Fandom
I Want My Mummy | ABC For Kids Wiki | Fandom

This pastes the original image onto a white background while respecting the alpha mask, and the resulting emoji output no longer has those weird black patches. Another problem is dealing with images that have large areas of a single flat color. The emoji palette includes shades from pure white to near black, but the mid-tones are not distributed evenly. A photo of a blue sky will end up looking patchy because the middle-blue range in the emoji map has large gaps. In these cases, applying a slight Gaussian blur to the image before conversion helps blend the pixels together and produces a smoother gradient. A blur radius of about 1.5 pixels on a 400-by-400 image is usually enough without making the result look muddy.

Common Pitfalls

People often expect iwmm to handle text or logos with sharp edges well. It does not. The emoji palette is fundamentally a brightness-based renderer, and it has no concept of vector lines or anti-aliased edges. A logo with thin white text on a black background will either disappear entirely or turn into a fuzzy blob. For that use case, you are better off using a dedicated ASCII art generator or just embedding the image directly. The tool is designed for photographs and complex visual scenes, not for graphic design work. The color output is also limited by the emoji available in Discord's native character set. Some emoji used by the library are not supported on older versions of Discord or on platforms like Reddit, where they will render as empty boxes. Always test your output in the target platform before posting. This usually takes about thirty seconds and saves a lot of confusion later.

Performance and Alternatives

The library is fast for small to medium images. A 500-by-500 pixel image at width=50 takes roughly two seconds to process on a standard laptop. Larger images or very high width values scale linearly, so a 200-width conversion of a 4000-pixel image might take around fifteen to twenty seconds. If you need batch processing, the overhead is acceptable but not instant. If you need more control over the output, there are alternatives. The emoji-art package and the various Python scripts built on top of Pillow give you access to custom palettes and different rendering algorithms. They require more setup and more code, but they handle edge cases better. For quick one-off conversions, iwmm remains the simplest option available, and it has been stable since its initial release with only minor dependency updates needed over the years.

I Want My Mummy - Lyrics – Colin Buchanan
I Want My Mummy - Lyrics – Colin Buchanan