Skip to content

Instantly share code, notes, and snippets.

@sillygwailo
Forked from drdrang/Wifi Statusbar.py
Last active December 31, 2015 19:08
Show Gist options
  • Save sillygwailo/8031155 to your computer and use it in GitHub Desktop.
Save sillygwailo/8031155 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import Image
import base64, zlib
# Jay Parlar convinced me to turn this data structure
# from a dictionary into an object.
class PackedImage(object):
def __init__(self, mode, size, data):
self.mode = mode
self.size = size
self.data = ''.join(data)
def unpack(self):
return Image.fromstring(self.mode,
self.size,
zlib.decompress(base64.b64decode(self.data)))
def cleanbar(screenshot):
'''Clean up the statusbar in an iOS screenshot.
Cover the signal strength, battery, location, and bluetooth
graphics with full strength symbols.'''
# This is for retina displays.
height = 40
# Statusbar image data for an iPhone 4, 4s, 5, 5c, or 5s portrait screenshot.
# The data string is compressed and base64-encoded.
limg = PackedImage('L',
(200, 40),
['eJztlm9IE2Ecx+9uNyX/zEzFZbo/mSSIEgoxKaJSsdLMXhhBmf',
'TCoFeF9caokMq0KBKinP1BrJCosAy0pMJSTARHZP+o1GwGWWuI',
'2tbm7nmu+/Mwz3mbm3MScZ93v7vt+H7ueX6/5zBMQkJCQkJCQu',
'I/h9BOQWJhqSrhTW1a8KwPkOdUPuo3O8wDbVW5QQGLOSvRNspJ',
'Ip5lvyUT3HziWIl7/rv67HcKQJoFAmrkvCaQWT0R7aAf3kHEYt',
'lUo9CjHSZ79FBU/wa0EGA9FxngwG5gPOJkCCZYhlZ484VnD91H',
'1qLnWLYqiAxK2HDkJbMwYGDtLEsoRFX71W6sVftZIQ+loJyeod',
'Ojxx4Lk/tBOknwv8EJ2aq7zBVridciuePcKk5s8qsS8YgvzeJC',
'xO+uuXk4DutCHhGFFQ1H8xa5pNhspX8VksLQuCz/B23f6q2HZg',
'xtxwmNH5WYR9Yk1+fbzUzzgtGibt4j8zNbUq9SpgfEdxqSCQwj',
't+h7TQ6T4Uq+nLm2oncX4aUGpnf2ld6PSsyD7/Ntdup42uKNzR',
'YTzXrorPBqumJ1Exhb7iIixzG8+BM/sBjRgRKCu+YtRmceox+V',
'06P1Pk8w8iBew1Jmu+DyRsh5dMATbCmrh9OGGUdkMwUF46olxm',
'sJBpvzj3Z87pXTAyJCkMd6xxB/oCVNsh46x3A4VyrHoco1ygGK',
'pker1ijI8MyTI8yiHPJ6U2Hzvh6pSh4MeewD1/g0+Du2P/aC22',
'gZumCO66YhLoMbS7mBhRMRetDo04k+tc/r/KicHq79UQ0q0Ftt',
'YT1Og1OorIf7Z7xueSE5JVXgOtI8oxlHcfgpNMfKrUc5OIPiPm',
'c9ykENKu/B4plNzFxJuT5o+VKfhmM+nIAcATs/OI8dVBO/kYhh',
'tj+KqFa0r95AnVjSPAs3r2wFvmow57LeaDfq1X5WbjwSrDb+Fw',
'UU66H+Y+e/Ftc5zBFiYULbuZHVqfBZYx4ROz8ugWdRTJHUT3Nz',
'9wLoiGVKTR8sE59GS3oYEYNPI3feEfNQGsBgbVmD6e0H7jyP6g',
'bDFw/qzbA1xM1DlH3w/bIFiesWMQ8srO4nALa22Kf8d0lw5TcA',
'wFCZ3O1T1I+1bu8tECQpKHASdTiZmBEqw2ToK5Ag4zJjSE9H3I',
'yD/l8Bdxk+vs8iCQkJCQkJCRf+Ak5nV1k='])
rimg = PackedImage('L',
(130, 40),
['eJxjYBgFo2AUDFHwX3XAXfBfm462Ga+9j8UF//XpZv+KV//LsL',
'ngvzld7Pc6ALTqFaY4yAX/bdFF9/0nFhwgznq25Ktg5cVIYoy7',
'OSAusAFKuKCq3/k/hkiPRf7fSYQqvtJX38AOuGCMJLr9/38OsA',
'sY5YFSfig6/vsTHQb+/wnaLzvh80OoapT4/vP//z8OsAsYeIHs',
'cBQXMBHtAqb/TPjtN176B674AYoMx6//oFAAuwA9EKjnAte9n4',
'GK/kEVW6FKsnwCOQHoAsn/6GmRSi5gS7j0/zuS2tfoCpieg8WV',
'/2MUCaS54P9/a6wOMH6CpjYdQwnjDagUeslMqguwpsZL79GU/s',
'Gm6gRYShpdmCouQAbghFCPVQokY4wpSqoLCOQHiAsEsUiwvgKb',
'glE90iQM1mARF4QZo0cPF2BpBqgAhQ9D8oIpZS5wJMIFFzBFHY',
'H6J4FKJGEgw44CFxCyHuICSwzBTKD2NEipzA0sHr1o7AKM0oiB',
'AVgiOjEgXOBDYxdglkYMvJ/ASQPoAvH/6NUzdetGkIG/8Mj9V/',
'2P0UShdvuA4V8dPhf8x9JMo3Yb6SEeOZAptG+qFuF3gRbNHYAX',
'AEukgXUAw3+5AXbAKBgFwxUAAElqKPY='])
# Calculate various dimensions based on the size of the screenshot.
width = screenshot.size[0]
lbox = (0, 0, limg.size[0], limg.size[1])
rbox = (width - rimg.size[0], 0, width, rimg.size[1])
# Decide whether the overlay text and graphics should be black or white.
# The pixel at (width-13, 21) is in the button of the battery.
p = screenshot.getpixel((width-13, 21))[:3]
if sum(p) > 3*250:
symbolcolor = 'white'
else:
symbolcolor = 'black'
# Create the masks.
lmask = limg.unpack()
rmask = rimg.unpack()
# Make the overlays.
left = Image.new('RGBA', limg.size, symbolcolor)
left.putalpha(lmask)
right = Image.new('RGBA', rimg.size, symbolcolor)
right.putalpha(rmask)
# Paste the overlays and return.
screenshot.paste(left, lbox, left)
screenshot.paste(right, rbox, right)
return screenshot
# And here we go.
if __name__ == '__main__':
import photos, console
screenshot = photos.pick_image()
console.clear()
cleanbar(screenshot).show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment