How to Turn a Photo Into a Game Sprite

How to Turn a Photo Into a Game Sprite

To turn a photo into a game sprite, convert it on a coarse grid (roughly 32 to 64 cells across), lock it to a small palette, cut the background out to transparency, add an outline so it reads against any level, and export a PNG. Then import it into your engine with point filtering and compression turned off, or the engine will blur everything you just made.

Be clear about what this gets you, though. A converted photo is a static sprite, and a good starting point for a hand-drawn one. It is not an animated character, and it will not match hand-drawn art in the same game without cleanup.

What makes a sprite different from a pixel art picture? #

A picture only has to look good. A sprite has to work inside a game, which adds requirements:

  • Transparency. A sprite sits on top of a level, so everything that isn’t the character has to be a transparent alpha channel, not white.
  • A readable silhouette. Players identify sprites by outline at small sizes and in motion.
  • A small, shared palette. Sprites drawn from one palette look like they belong to the same game. A photo-derived sprite with 200 colors will not.
  • A sensible size. Sprites are usually sized in whole tiles: 16x16, 32x32, 64x64.
  • Clean edges. No anti-aliasing, no semi-transparent fringe, no JPEG mush.

Step 1: Shoot or choose the right photo #

The photo does most of the work, and the same rules apply as for pixel art stickers:

  • Plain, contrasting background. A cut-out tool can only find the background if it looks different from the subject.
  • Whole subject in frame, with background visible in all four corners.
  • Side lighting. A clear light side and shadow side survives a small palette. Flat light collapses into one tone.
  • A clear pose. Arms away from the body, front-on or in profile. Sprites read best when the silhouette is unambiguous.

Photograph objects, not just people. A plant, a mug, a bike, a pet or a sandwich all make better first sprites than a portrait, because nobody notices when an object’s face is slightly wrong.

Step 2: Convert on a coarse grid #

Sprites are small. Aim for the finished sprite to be roughly 32 to 64 cells across. Much finer and it stops reading as a sprite; much coarser and you lose the subject.

In Pixelize, pixel size is measured on a 720-pixel working copy, so 16px gives 45 cells across and 24px gives 30. Start at 16px, and turn Avatar mode on beforehand if you want a square sprite.

Turn dithering off. This is the one place where dithering usually hurts: error diffusion scatters isolated pixels around the subject’s edge, and those become ragged fringe once the background is cut away. Flat color fields cut cleanly.

Step 3: Pick a palette that matches your game #

If you already have art, sample the palette from it and rebuild it in your converter so the new sprite matches. Palette Studio in Pixelize saves custom palettes by hex code alongside the built-in ones, which is the practical way to keep a photo-derived sprite from looking like a visitor from another game.

If you’re starting fresh, pick an era:

  • Four colors (Game Boy) for a handheld look.
  • 16 colors (PICO-8, Sweetie 16, Commodore 64) for the classic limited-palette look. See the PICO-8 color palette for its exact 16 hex codes.
  • NES-style if you want authentic 8-bit console constraints, though real NES sprites were limited to three colors plus transparency each. How many colors could the NES display explains those rules.

Step 4: Cut out the background #

In Pixelize, the FX tab has Cut out background. It averages the colors of the four corners, then removes connected cells from the edges inward that are close to that color, leaving a transparent PNG. The Cut-out strength slider sets how close counts as close.

Two things to know about this approach, because they decide your photo setup:

  • Background that’s enclosed by the subject, like the gap between an arm and a torso, isn’t reachable from the edges, so it stays filled. Pose so gaps connect to the outside, or clean them up later in a pixel editor.
  • If the subject shares a color with the background, raising the strength will eat into the subject. Reshoot on a more contrasting surface rather than fighting the slider.

Step 5: Add an outline #

The Outline effect darkens cells along strong edges, which is what pixel artists do by hand to make a sprite pop against a busy level. If you’re going for the sticker look instead, the die-cut Sticker border grows a solid outline of 1 to 6 cells in white, near-black, pink, blue or yellow around the silhouette.

For a game sprite, a one-cell dark outline is usually right. A thick white border reads as a sticker, not a character.

Step 6: Export as a transparent PNG #

Export at a size that’s a whole-number multiple of your grid. Pixelize offers S, M and XL up to a 2160-pixel long edge, and exports are PNG with the transparency intact. Never save a sprite as JPEG: it has no alpha channel and it blurs the edges you just made crisp.

Importing a sprite so it stays sharp #

Game engines default to settings tuned for photographs, which is exactly wrong for pixel art. Fix three things.

In Unity, its 2D Pixel Perfect documentation says to set all sprites to the same Pixels Per Unit value, set their Filter Mode to Point, and set Compression to None. The Pixel Perfect Camera component then keeps the art crisp across resolutions, and its pixel snapping stops sprites from landing on half-pixels while they move.

In Godot, the image import documentation recommends lossless compression for pixel art, and says pixel art textures should have VRAM compression disabled because it hurts their appearance without meaningfully helping performance. Texture filtering is set on the CanvasItem in 2D, and you want the nearest-neighbor option.

Everywhere else, look for the same three ideas under different names: nearest-neighbor or point sampling instead of linear or bilinear, no texture compression, and no mipmaps for 2D sprites.

What a converter can’t do for you #

Honesty about the limits saves time:

  • Animation. A sprite sheet needs multiple frames of the same character in different poses. A converter gives you one frame. Animating means either photographing each pose or drawing frames by hand in a tool like Aseprite. Aseprite vs a photo to pixel art converter covers where each one fits.
  • Consistency. Two photos taken in different light produce two sprites that don’t match, even with the same palette.
  • Clean pixel logic. Hand-drawn sprites avoid stray single pixels and awkward diagonal stair-steps. Converted photos are full of both. Fixing them is normal, and it’s why many artists convert a photo and then redraw over it.
  • Rights. If the photo isn’t yours, you can’t ship a sprite made from it. Use your own photos for anything you publish.

Frequently asked questions #

What size should a game sprite be? #

Common sizes are 16x16, 32x32 and 64x64 pixels, matched to the tile size of the game. Decide the tile size first, then convert at a grid that fits it. Export at a whole-number multiple so the sprite scales cleanly.

Why does my sprite look blurry in Unity or Godot? #

The engine is filtering the texture. Set Filter Mode to Point in Unity and use nearest-neighbor filtering in Godot, and turn texture compression off in both. Also check that you aren’t displaying the sprite at a fractional scale.

Can I use a photo-based sprite in a commercial game? #

Only if you own or licensed the photo and have permission from anyone recognizable in it. Photos of your own objects and pets are the safe route. Photos of other people, public figures, logos or copyrighted characters are not.

Should I dither a sprite? #

Usually not. Dithering scatters loose pixels that produce a ragged edge after background removal, and it makes a sprite noisy against a moving background. Flat color reads better at sprite sizes. Dithering earns its place in backgrounds and large still images.

How do I make a sprite sheet from photos? #

Photograph each pose from the same spot with the same lighting, convert them all with identical settings, then arrange the frames in a grid in a pixel editor. Keeping the camera and settings identical is the hard part, which is why most animation is drawn rather than photographed.