Skip to content

Instantly share code, notes, and snippets.

@danielsharvey
Last active September 15, 2022 14:32
Show Gist options
  • Save danielsharvey/929a525712a2b89ebb561226cc32f3e7 to your computer and use it in GitHub Desktop.
Save danielsharvey/929a525712a2b89ebb561226cc32f3e7 to your computer and use it in GitHub Desktop.
Converting iPhone iOS '.cpbitmap' images to PNGs
#!/usr/bin/python
from PIL import Image,ImageOps
import struct
import sys
if len(sys.argv) < 3:
print "Need two args: source_filename and result_filename\n";
sys.exit(0)
filename = sys.argv[1]
result_filename = sys.argv[2]
with open(filename) as f:
contents = f.read()
unk1, width, height, unk2, unk3, unk4 = struct.unpack('<6i', contents[-24:])
im = Image.frombytes('RGBA', (width,height), contents, 'raw', 'RGBA', 0, 1)
r,g,b,a = im.split()
im = Image.merge('RGBA', (b,g,r,a))
im.save(result_filename)
@ainsleyrutterford
Copy link

A browser based version I created based off of that Node.js Stack Overflow answer. It works in all modern browsers and should work with all versions of iOS so far: https://cpbitmap.github.io/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment