Skip to content

Instantly share code, notes, and snippets.

@parlarjb
Forked from drdrang/Cleanbar.py
Last active December 28, 2015 09:38
Show Gist options
  • Save parlarjb/7479899 to your computer and use it in GitHub Desktop.
Save parlarjb/7479899 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
from __future__ import division
import Image
import sys, os
import base64, zlib
import photos, console
class Img(object):
def __init__(self, mode, size, data):
self.mode = mode
self.size = size
self.data = ''.join(data)
def statusbare(screen):
'''Clean up the statusbar in an iOS screenshot.
Strip out everything except the clock and replace with
graphics that show full battery and signal strength.'''
# This is for retina displays.
height = 40
clockwidth = 160
# Statusbar image data for an iPhone 4, 4s, 5, 5c, or 5s portrait screenshot.
# The data string is compressed and base64-encoded.
limg = Img(
mode='L',
size=(160, 40),
data=['eJxjYBgFo2AUjIJRMJIBq8dAuwAvcHl5d6CdgA8Y/fy/AIcUq3',
'vH7gcf/396sLvDnZWebkIGa/5/ksMqIdf35j8CvOmTp7PDoODl',
'ax9swrw9P/+jgp89/PR1mcusEytrnRuq5l0426iHJmd5H+SkE1',
'UOkkwMTJL2lcdA3PtW+IyTm/7w56Pp8hTyEKD8H1Lg/E1BkUv4',
'BRRbp4skorsGFIRxuJ3n/gls0GcPingIYIMae2Uokp4//7/xQt',
'Pg+eb/T3QxBFD4CDXoswIFPCSwF8V5M9GsCzunBCRZvGdfeP//',
'/YXZPixAntK5MJzOY5gBN2oGBTwEYEeO3f//TdDtY2JgYIy7D5',
'e/H88IFsMJHsGVPqKAhwAaKM57iMVGwe0oSnYI4XEdA8MPuMKf',
'jOTzEMAWxfJLWGwsAoq/bzbnZOAwb3oFZBfjdR+1w08GxX0/BL',
'FYOe3/fBEok3vG/6WMWJQgACIdzaSAhwCMX1Ec2InFSmZfJI43',
'G17nMSh8gpoEyZVk8pDAIRT3/cvDnvh1Fj7++XihLlY5VEDt8i',
'/iPyrwx2apz2+w3G+sVSAakJvx6OejGfIU8uCA5TGK855ibaBw',
'HgRLHuIiwn3UBlko7kvErojvNFDuNJ0bBlCwBsl5G3GVvaJX/l',
'8Vpauz4IDvLNBh706B0udR3BEovVOGjm5CAYyu2dqMDIyaSU74',
'y7ZRMApGwSgYBaOAigAA3eJAYw=='])
rimg = Img(
mode='L',
size=(140, 40),
data=['eJztlmtIFFEYhr/1srp4ScOktDQhtSzBIpOQilJbCbJAzTKFUg',
'sisigIQSy7oYH+CCNSs4i0SA3qR4oGQsmilGliYUlZIpHhpdt6',
'2didtzNz1t1V0F1t/Tfvj+8778x3Ds/MOWfOEMmSJUuWLFnzlT',
'Ix1tIeaINtaku1OnRlJs++NzvG+57GGa+mNH7VviryNLq0ltGu',
'iw5GU4T9Ft1TNGttfIYwTYqVio0olvL6IRg0w8Alyd0CvrUC/Y',
'GSS0f5llzhOu+gFios+3cGF9j4XgqDO2dH8XjNWZze4N5Sck7W',
'C9HMJUMb50Ar69AgFXW3K4jujXuLbd+B926WAwiKCRtZdApBMT',
'NIaGHlL3AWNQakCbmGWhZbcFY0/lqsY2kZClhMg7hMFHW6DVPG',
'EBSCjSyYlSVRKpFYSnBBuuQPrTMtEXQukitHDonTmC3RHmTxFE',
'5PHcNeLAqlUpnGWZqQyK8NYRVtRRc3J1DFYhjOsJiA3UQRE3XT',
'xpsbi/bx8plxKIWzfIRxO7RgB5uOGm7UaGbRXV/KYi5Wk6p7wH',
'da/7mxCGiyzvIdQdw/QwIdw11uotEuptphP/L6rCEqFdREbpHe',
'/8Eyap1lBH7c1yGJslHGzSa8E1PQh5/1Q/1r2PoqImWVQYdGr3',
'mzYJY1Y2QZRAD3DdhLx3Gbm83gnwSPPblJi2nFSJuSSgz7nGLG',
'nyzke+lHKPfPEU+ZeMDNdrSaKx1faENI9aeaNW8Y/OfLYsN6aY',
'Wa+z6EUzxauDmMR+bKc8ggCsdJ1jyEybNiriz1gdZZqqR9y2YD',
'encKxm9+sxhXTYXR+ocsxohAlATT0WKv74sFSzpapcKj0i7+hF',
'2ice1FzGSdV98XccFGSN+9DGxbQBbvYRxhyWcQWSzloUfFUj56',
'nSfrqvXiQUXu45Uslup8zCz2OY8sWCgVeJlzfxRNYr3LW/yoyO',
'uCwfRasnCeN0r/7lTETtwx9e8MvmwjyxVr57SJhdQ9rH6s0FUy',
'nmXi03ZETVaFjjY78paqWhgz1KjM/e34/2Ih76ggB5NxDIn0MN',
'9Kzg8wtT0iF1n2sud/nSxZsmTJWlD9A546FLU='])
# 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])
cl = (width - clockwidth)//2
cr = cl + clockwidth
# Cover over the statusbar except for the time.
# Use the colors along the left edge.
for y in range(height):
p = screenshot.getpixel((0, y))[:3]
screenshot.paste(p, (0, y, cl, y+1))
screenshot.paste(p, (cr, y, width, y+1))
# Decide whether the overlay text and graphics should be black or white.
if sum(p)/3 > 192: # p is the last color from the loop above
textcolor = 'black'
else:
textcolor = 'white'
# Create the masks.
lmask = Image.fromstring(limg.mode,
limg.size,
zlib.decompress(base64.b64decode(limg.data)))
rmask = Image.fromstring(rimg.mode,
rimg.size,
zlib.decompress(base64.b64decode(rimg.data)))
# Make the overlays.
left = Image.new('RGBA', limg.size, textcolor)
left.putalpha(lmask)
right = Image.new('RGBA', rimg.size, textcolor)
right.putalpha(rmask)
# Paste the overlays and return.
screenshot.paste(left, lbox, left)
screenshot.paste(right, rbox, right)
return screenshot
# And here we go.
screenshot = photos.pick_image()
console.clear()
statusbare(screenshot).show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment