diff --git a/contrib/devtools/optimize-pngs.py b/contrib/devtools/optimize-pngs.py new file mode 100755 index 00000000000..38aaa00f312 --- /dev/null +++ b/contrib/devtools/optimize-pngs.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python + +import os +import sys +import subprocess +import hashlib +from PIL import Image + +def file_hash(filename): + '''Return hash of raw file contents''' + with open(filename, 'rb') as f: + return hashlib.sha256(f.read()).hexdigest() + +def content_hash(filename): + '''Return hash of RGBA contents of image''' + i = Image.open(filename) + i = i.convert('RGBA') + data = i.tostring() + return hashlib.sha256(data).hexdigest() + +#optimize png, remove various color profiles, remove ancillary chunks (alla) and text chunks (text) +#pngcrush -brute -ow -rem gAMA -rem cHRM -rem iCCP -rem sRGB -rem alla -rem text + +pngcrush = 'pngcrush' +git = 'git' +folders = ["src/qt/res/movies", "src/qt/res/icons", "src/qt/res/images"] +basePath = subprocess.check_output([git, 'rev-parse', '--show-toplevel']).rstrip('\n') +totalSaveBytes = 0 + +outputArray = [] +for folder in folders: + absFolder=os.path.join(basePath, folder) + for file in os.listdir(absFolder): + extension = os.path.splitext(file)[1] + if extension.lower() == '.png': + print("optimizing "+file+"..."), + file_path = os.path.join(absFolder, file) + fileMetaMap = {'file' : file, 'osize': os.path.getsize(file_path), 'sha256Old' : file_hash(file_path)}; + fileMetaMap['contentHashPre'] = content_hash(file_path) + + pngCrushOutput = "" + try: + pngCrushOutput = subprocess.check_output( + [pngcrush, "-brute", "-ow", "-rem", "gAMA", "-rem", "cHRM", "-rem", "iCCP", "-rem", "sRGB", "-rem", "alla", "-rem", "text", file_path], + stderr=subprocess.STDOUT).rstrip('\n') + except: + print "pngcrush is not installed, aborting..." + sys.exit(0) + + #verify + if "Not a PNG file" in subprocess.check_output([pngcrush, "-n", "-v", file_path], stderr=subprocess.STDOUT): + print "PNG file "+file+" is corrupted after crushing, check out pngcursh version" + sys.exit(1) + + fileMetaMap['sha256New'] = file_hash(file_path) + fileMetaMap['contentHashPost'] = content_hash(file_path) + + if fileMetaMap['contentHashPre'] != fileMetaMap['contentHashPost']: + print "Image contents of PNG file "+file+" before and after crushing don't match" + sys.exit(1) + + fileMetaMap['psize'] = os.path.getsize(file_path) + outputArray.append(fileMetaMap) + print("done\n"), + +print "summary:\n+++++++++++++++++" +for fileDict in outputArray: + oldHash = fileDict['sha256Old'] + newHash = fileDict['sha256New'] + totalSaveBytes += fileDict['osize'] - fileDict['psize'] + print fileDict['file']+"\n size diff from: "+str(fileDict['osize'])+" to: "+str(fileDict['psize'])+"\n old sha256: "+oldHash+"\n new sha256: "+newHash+"\n" + +print "completed. Total reduction: "+str(totalSaveBytes)+" bytes" diff --git a/src/qt/res/icons/about.png b/src/qt/res/icons/about.png index eeef9433557..83eb3c07ee5 100644 Binary files a/src/qt/res/icons/about.png and b/src/qt/res/icons/about.png differ diff --git a/src/qt/res/icons/about_qt.png b/src/qt/res/icons/about_qt.png index d3665e98925..dd27a99d0a7 100644 Binary files a/src/qt/res/icons/about_qt.png and b/src/qt/res/icons/about_qt.png differ diff --git a/src/qt/res/icons/add.png b/src/qt/res/icons/add.png index ef995cc0b54..7e46672f2df 100644 Binary files a/src/qt/res/icons/add.png and b/src/qt/res/icons/add.png differ diff --git a/src/qt/res/icons/address-book.png b/src/qt/res/icons/address-book.png index 0c9238c18e5..b11c7d53569 100644 Binary files a/src/qt/res/icons/address-book.png and b/src/qt/res/icons/address-book.png differ diff --git a/src/qt/res/icons/bitcoin.png b/src/qt/res/icons/bitcoin.png index 705a20260af..435621af23b 100644 Binary files a/src/qt/res/icons/bitcoin.png and b/src/qt/res/icons/bitcoin.png differ diff --git a/src/qt/res/icons/clock1.png b/src/qt/res/icons/clock1.png index 65adba5e21d..ceae5ed0d9f 100644 Binary files a/src/qt/res/icons/clock1.png and b/src/qt/res/icons/clock1.png differ diff --git a/src/qt/res/icons/clock2.png b/src/qt/res/icons/clock2.png index 196a79ce4a4..159f69a8fce 100644 Binary files a/src/qt/res/icons/clock2.png and b/src/qt/res/icons/clock2.png differ diff --git a/src/qt/res/icons/clock3.png b/src/qt/res/icons/clock3.png index 3d04655ed95..d668e35ffc0 100644 Binary files a/src/qt/res/icons/clock3.png and b/src/qt/res/icons/clock3.png differ diff --git a/src/qt/res/icons/clock4.png b/src/qt/res/icons/clock4.png index c3210c5af1f..5ebf8ed7ac7 100644 Binary files a/src/qt/res/icons/clock4.png and b/src/qt/res/icons/clock4.png differ diff --git a/src/qt/res/icons/clock5.png b/src/qt/res/icons/clock5.png index 84a9fa2842b..96f15ef7d95 100644 Binary files a/src/qt/res/icons/clock5.png and b/src/qt/res/icons/clock5.png differ diff --git a/src/qt/res/icons/configure.png b/src/qt/res/icons/configure.png index fe9c6ec5ecf..5333c83d5eb 100644 Binary files a/src/qt/res/icons/configure.png and b/src/qt/res/icons/configure.png differ diff --git a/src/qt/res/icons/connect0.png b/src/qt/res/icons/connect0.png index 99bb2575d61..58e2c3e965a 100644 Binary files a/src/qt/res/icons/connect0.png and b/src/qt/res/icons/connect0.png differ diff --git a/src/qt/res/icons/connect1.png b/src/qt/res/icons/connect1.png index dffc692c76d..949e7a922d5 100644 Binary files a/src/qt/res/icons/connect1.png and b/src/qt/res/icons/connect1.png differ diff --git a/src/qt/res/icons/connect2.png b/src/qt/res/icons/connect2.png index 3594fb117c3..143b2054fb6 100644 Binary files a/src/qt/res/icons/connect2.png and b/src/qt/res/icons/connect2.png differ diff --git a/src/qt/res/icons/connect3.png b/src/qt/res/icons/connect3.png index 3594fb117c3..143b2054fb6 100644 Binary files a/src/qt/res/icons/connect3.png and b/src/qt/res/icons/connect3.png differ diff --git a/src/qt/res/icons/connect4.png b/src/qt/res/icons/connect4.png index 0c667c7e06d..f96e3455cee 100644 Binary files a/src/qt/res/icons/connect4.png and b/src/qt/res/icons/connect4.png differ diff --git a/src/qt/res/icons/debugwindow.png b/src/qt/res/icons/debugwindow.png index 576e57ab035..290fe608642 100644 Binary files a/src/qt/res/icons/debugwindow.png and b/src/qt/res/icons/debugwindow.png differ diff --git a/src/qt/res/icons/edit.png b/src/qt/res/icons/edit.png index 4df2229e98e..46582716ef4 100644 Binary files a/src/qt/res/icons/edit.png and b/src/qt/res/icons/edit.png differ diff --git a/src/qt/res/icons/editcopy.png b/src/qt/res/icons/editcopy.png index db0c51772c9..74ac8b27742 100644 Binary files a/src/qt/res/icons/editcopy.png and b/src/qt/res/icons/editcopy.png differ diff --git a/src/qt/res/icons/editpaste.png b/src/qt/res/icons/editpaste.png index be8634674d2..7b47f4d52bc 100644 Binary files a/src/qt/res/icons/editpaste.png and b/src/qt/res/icons/editpaste.png differ diff --git a/src/qt/res/icons/export.png b/src/qt/res/icons/export.png index 18d05961940..ac76cc1effc 100644 Binary files a/src/qt/res/icons/export.png and b/src/qt/res/icons/export.png differ diff --git a/src/qt/res/icons/eye.png b/src/qt/res/icons/eye.png index 7036708de5d..f2f139dbb2f 100644 Binary files a/src/qt/res/icons/eye.png and b/src/qt/res/icons/eye.png differ diff --git a/src/qt/res/icons/eye_minus.png b/src/qt/res/icons/eye_minus.png index bdbe0736274..795bf6436a4 100644 Binary files a/src/qt/res/icons/eye_minus.png and b/src/qt/res/icons/eye_minus.png differ diff --git a/src/qt/res/icons/eye_plus.png b/src/qt/res/icons/eye_plus.png index 2ba5e68c769..eaab69297a6 100644 Binary files a/src/qt/res/icons/eye_plus.png and b/src/qt/res/icons/eye_plus.png differ diff --git a/src/qt/res/icons/filesave.png b/src/qt/res/icons/filesave.png index a53390f5947..f4e6f58d05b 100644 Binary files a/src/qt/res/icons/filesave.png and b/src/qt/res/icons/filesave.png differ diff --git a/src/qt/res/icons/history.png b/src/qt/res/icons/history.png index cb723abc5f7..68d841fa859 100644 Binary files a/src/qt/res/icons/history.png and b/src/qt/res/icons/history.png differ diff --git a/src/qt/res/icons/info.png b/src/qt/res/icons/info.png index 085fa8ea736..692b50c2a94 100644 Binary files a/src/qt/res/icons/info.png and b/src/qt/res/icons/info.png differ diff --git a/src/qt/res/icons/key.png b/src/qt/res/icons/key.png index d21f81364d8..f301c4f38ca 100644 Binary files a/src/qt/res/icons/key.png and b/src/qt/res/icons/key.png differ diff --git a/src/qt/res/icons/lock_closed.png b/src/qt/res/icons/lock_closed.png index 77914ab2ce4..1bd98b21a6d 100644 Binary files a/src/qt/res/icons/lock_closed.png and b/src/qt/res/icons/lock_closed.png differ diff --git a/src/qt/res/icons/lock_open.png b/src/qt/res/icons/lock_open.png index 50615b73362..a7045133b16 100644 Binary files a/src/qt/res/icons/lock_open.png and b/src/qt/res/icons/lock_open.png differ diff --git a/src/qt/res/icons/open.png b/src/qt/res/icons/open.png index 390d3dab646..4d958f0e18d 100644 Binary files a/src/qt/res/icons/open.png and b/src/qt/res/icons/open.png differ diff --git a/src/qt/res/icons/overview.png b/src/qt/res/icons/overview.png index 36e1003c3c1..411595413d6 100644 Binary files a/src/qt/res/icons/overview.png and b/src/qt/res/icons/overview.png differ diff --git a/src/qt/res/icons/quit.png b/src/qt/res/icons/quit.png index 6e44a2d329a..55e34de4b8c 100644 Binary files a/src/qt/res/icons/quit.png and b/src/qt/res/icons/quit.png differ diff --git a/src/qt/res/icons/receive.png b/src/qt/res/icons/receive.png index a53390f5947..f4e6f58d05b 100644 Binary files a/src/qt/res/icons/receive.png and b/src/qt/res/icons/receive.png differ diff --git a/src/qt/res/icons/remove.png b/src/qt/res/icons/remove.png index 3849cdd6d84..8e738d6301f 100644 Binary files a/src/qt/res/icons/remove.png and b/src/qt/res/icons/remove.png differ diff --git a/src/qt/res/icons/send.png b/src/qt/res/icons/send.png index 18d05961940..ac76cc1effc 100644 Binary files a/src/qt/res/icons/send.png and b/src/qt/res/icons/send.png differ diff --git a/src/qt/res/icons/synced.png b/src/qt/res/icons/synced.png index d33914f0b4a..5ac28d36a39 100644 Binary files a/src/qt/res/icons/synced.png and b/src/qt/res/icons/synced.png differ diff --git a/src/qt/res/icons/transaction0.png b/src/qt/res/icons/transaction0.png index fd41da06804..1091b86e688 100644 Binary files a/src/qt/res/icons/transaction0.png and b/src/qt/res/icons/transaction0.png differ diff --git a/src/qt/res/icons/transaction2.png b/src/qt/res/icons/transaction2.png index d33914f0b4a..5ac28d36a39 100644 Binary files a/src/qt/res/icons/transaction2.png and b/src/qt/res/icons/transaction2.png differ diff --git a/src/qt/res/icons/transaction_conflicted.png b/src/qt/res/icons/transaction_conflicted.png index 6e44a2d329a..55e34de4b8c 100644 Binary files a/src/qt/res/icons/transaction_conflicted.png and b/src/qt/res/icons/transaction_conflicted.png differ diff --git a/src/qt/res/icons/tx_inout.png b/src/qt/res/icons/tx_inout.png index cecd332ad1f..0a6e72a8989 100644 Binary files a/src/qt/res/icons/tx_inout.png and b/src/qt/res/icons/tx_inout.png differ diff --git a/src/qt/res/icons/tx_input.png b/src/qt/res/icons/tx_input.png index 1b4cfd967cd..9e9ee92932c 100644 Binary files a/src/qt/res/icons/tx_input.png and b/src/qt/res/icons/tx_input.png differ diff --git a/src/qt/res/icons/tx_mined.png b/src/qt/res/icons/tx_mined.png index 421a9cf6398..5a6ef521c07 100644 Binary files a/src/qt/res/icons/tx_mined.png and b/src/qt/res/icons/tx_mined.png differ diff --git a/src/qt/res/icons/tx_output.png b/src/qt/res/icons/tx_output.png index 06d9d0adf27..6f66ab65479 100644 Binary files a/src/qt/res/icons/tx_output.png and b/src/qt/res/icons/tx_output.png differ diff --git a/src/qt/res/icons/verify.png b/src/qt/res/icons/verify.png index 9ff35c27930..8e2cb2cc144 100644 Binary files a/src/qt/res/icons/verify.png and b/src/qt/res/icons/verify.png differ diff --git a/src/qt/res/movies/spinner-000.png b/src/qt/res/movies/spinner-000.png index b296a584817..1e92d859da1 100644 Binary files a/src/qt/res/movies/spinner-000.png and b/src/qt/res/movies/spinner-000.png differ diff --git a/src/qt/res/movies/spinner-001.png b/src/qt/res/movies/spinner-001.png index 4f6f9a487ba..d167f20541f 100644 Binary files a/src/qt/res/movies/spinner-001.png and b/src/qt/res/movies/spinner-001.png differ diff --git a/src/qt/res/movies/spinner-002.png b/src/qt/res/movies/spinner-002.png index 4f14e3ca931..4a1f1f8e566 100644 Binary files a/src/qt/res/movies/spinner-002.png and b/src/qt/res/movies/spinner-002.png differ diff --git a/src/qt/res/movies/spinner-003.png b/src/qt/res/movies/spinner-003.png index d7756e73bf6..fb1c2cd4adc 100644 Binary files a/src/qt/res/movies/spinner-003.png and b/src/qt/res/movies/spinner-003.png differ diff --git a/src/qt/res/movies/spinner-004.png b/src/qt/res/movies/spinner-004.png index 4b381b81b27..4df2132344f 100644 Binary files a/src/qt/res/movies/spinner-004.png and b/src/qt/res/movies/spinner-004.png differ diff --git a/src/qt/res/movies/spinner-005.png b/src/qt/res/movies/spinner-005.png index cbdb5b57975..5d6f41e0dc0 100644 Binary files a/src/qt/res/movies/spinner-005.png and b/src/qt/res/movies/spinner-005.png differ diff --git a/src/qt/res/movies/spinner-006.png b/src/qt/res/movies/spinner-006.png index 55d4540c92f..c1f7d18899b 100644 Binary files a/src/qt/res/movies/spinner-006.png and b/src/qt/res/movies/spinner-006.png differ diff --git a/src/qt/res/movies/spinner-007.png b/src/qt/res/movies/spinner-007.png index b25f59a445b..1e794b26262 100644 Binary files a/src/qt/res/movies/spinner-007.png and b/src/qt/res/movies/spinner-007.png differ diff --git a/src/qt/res/movies/spinner-008.png b/src/qt/res/movies/spinner-008.png index 6493184a7a6..df12ea87197 100644 Binary files a/src/qt/res/movies/spinner-008.png and b/src/qt/res/movies/spinner-008.png differ diff --git a/src/qt/res/movies/spinner-009.png b/src/qt/res/movies/spinner-009.png index 938c49f9d30..18fc3a7d16d 100644 Binary files a/src/qt/res/movies/spinner-009.png and b/src/qt/res/movies/spinner-009.png differ diff --git a/src/qt/res/movies/spinner-010.png b/src/qt/res/movies/spinner-010.png index 7eb645eda5f..a79c845fe82 100644 Binary files a/src/qt/res/movies/spinner-010.png and b/src/qt/res/movies/spinner-010.png differ diff --git a/src/qt/res/movies/spinner-011.png b/src/qt/res/movies/spinner-011.png index fd4b63ca5aa..57baf66895f 100644 Binary files a/src/qt/res/movies/spinner-011.png and b/src/qt/res/movies/spinner-011.png differ diff --git a/src/qt/res/movies/spinner-012.png b/src/qt/res/movies/spinner-012.png index 10d26a3a53f..9deae7853a7 100644 Binary files a/src/qt/res/movies/spinner-012.png and b/src/qt/res/movies/spinner-012.png differ diff --git a/src/qt/res/movies/spinner-013.png b/src/qt/res/movies/spinner-013.png index 863a9d29082..0659d48decf 100644 Binary files a/src/qt/res/movies/spinner-013.png and b/src/qt/res/movies/spinner-013.png differ diff --git a/src/qt/res/movies/spinner-014.png b/src/qt/res/movies/spinner-014.png index d01086cb988..bc1ef51bded 100644 Binary files a/src/qt/res/movies/spinner-014.png and b/src/qt/res/movies/spinner-014.png differ diff --git a/src/qt/res/movies/spinner-015.png b/src/qt/res/movies/spinner-015.png index 402dbea6934..24b57b62c2c 100644 Binary files a/src/qt/res/movies/spinner-015.png and b/src/qt/res/movies/spinner-015.png differ diff --git a/src/qt/res/movies/spinner-016.png b/src/qt/res/movies/spinner-016.png index 1db20e60788..d622872651a 100644 Binary files a/src/qt/res/movies/spinner-016.png and b/src/qt/res/movies/spinner-016.png differ diff --git a/src/qt/res/movies/spinner-017.png b/src/qt/res/movies/spinner-017.png index e2c2e2ef78d..f48f688db20 100644 Binary files a/src/qt/res/movies/spinner-017.png and b/src/qt/res/movies/spinner-017.png differ diff --git a/src/qt/res/movies/spinner-018.png b/src/qt/res/movies/spinner-018.png index 6f1fe737565..a2c8f38b1d8 100644 Binary files a/src/qt/res/movies/spinner-018.png and b/src/qt/res/movies/spinner-018.png differ diff --git a/src/qt/res/movies/spinner-019.png b/src/qt/res/movies/spinner-019.png index 5f18f656089..9d7cc35d828 100644 Binary files a/src/qt/res/movies/spinner-019.png and b/src/qt/res/movies/spinner-019.png differ diff --git a/src/qt/res/movies/spinner-020.png b/src/qt/res/movies/spinner-020.png index c12ae200161..1a07acc4540 100644 Binary files a/src/qt/res/movies/spinner-020.png and b/src/qt/res/movies/spinner-020.png differ diff --git a/src/qt/res/movies/spinner-021.png b/src/qt/res/movies/spinner-021.png index d81ceade23f..9cea8f25433 100644 Binary files a/src/qt/res/movies/spinner-021.png and b/src/qt/res/movies/spinner-021.png differ diff --git a/src/qt/res/movies/spinner-022.png b/src/qt/res/movies/spinner-022.png index 69c6657942f..60250f6dea8 100644 Binary files a/src/qt/res/movies/spinner-022.png and b/src/qt/res/movies/spinner-022.png differ diff --git a/src/qt/res/movies/spinner-023.png b/src/qt/res/movies/spinner-023.png index 7bed5bae85a..fc290a0cf24 100644 Binary files a/src/qt/res/movies/spinner-023.png and b/src/qt/res/movies/spinner-023.png differ diff --git a/src/qt/res/movies/spinner-024.png b/src/qt/res/movies/spinner-024.png index b3be8d3e8e7..c5dcf1eae90 100644 Binary files a/src/qt/res/movies/spinner-024.png and b/src/qt/res/movies/spinner-024.png differ diff --git a/src/qt/res/movies/spinner-025.png b/src/qt/res/movies/spinner-025.png index 3a7fa9ab0d1..7f3577a4de2 100644 Binary files a/src/qt/res/movies/spinner-025.png and b/src/qt/res/movies/spinner-025.png differ diff --git a/src/qt/res/movies/spinner-026.png b/src/qt/res/movies/spinner-026.png index dd92fc4fc17..1663ddf44c0 100644 Binary files a/src/qt/res/movies/spinner-026.png and b/src/qt/res/movies/spinner-026.png differ diff --git a/src/qt/res/movies/spinner-027.png b/src/qt/res/movies/spinner-027.png index 9adefee2688..d0e6da45038 100644 Binary files a/src/qt/res/movies/spinner-027.png and b/src/qt/res/movies/spinner-027.png differ diff --git a/src/qt/res/movies/spinner-028.png b/src/qt/res/movies/spinner-028.png index 83e7cdd583c..2a7aba50e2c 100644 Binary files a/src/qt/res/movies/spinner-028.png and b/src/qt/res/movies/spinner-028.png differ diff --git a/src/qt/res/movies/spinner-029.png b/src/qt/res/movies/spinner-029.png index 6cbdbb0fe10..c8ca15c1e1c 100644 Binary files a/src/qt/res/movies/spinner-029.png and b/src/qt/res/movies/spinner-029.png differ diff --git a/src/qt/res/movies/spinner-030.png b/src/qt/res/movies/spinner-030.png index e4a09a44bc4..c847c99a93e 100644 Binary files a/src/qt/res/movies/spinner-030.png and b/src/qt/res/movies/spinner-030.png differ diff --git a/src/qt/res/movies/spinner-031.png b/src/qt/res/movies/spinner-031.png index 3c3d5057410..403443144eb 100644 Binary files a/src/qt/res/movies/spinner-031.png and b/src/qt/res/movies/spinner-031.png differ diff --git a/src/qt/res/movies/spinner-032.png b/src/qt/res/movies/spinner-032.png index 7460f80da35..f9db080567c 100644 Binary files a/src/qt/res/movies/spinner-032.png and b/src/qt/res/movies/spinner-032.png differ diff --git a/src/qt/res/movies/spinner-033.png b/src/qt/res/movies/spinner-033.png index d327e8fb081..43f57719e7f 100644 Binary files a/src/qt/res/movies/spinner-033.png and b/src/qt/res/movies/spinner-033.png differ diff --git a/src/qt/res/movies/spinner-034.png b/src/qt/res/movies/spinner-034.png index d8432751dae..c26656ff17a 100644 Binary files a/src/qt/res/movies/spinner-034.png and b/src/qt/res/movies/spinner-034.png differ diff --git a/src/qt/res/movies/spinner-035.png b/src/qt/res/movies/spinner-035.png index c89c959c948..e471f950a3e 100644 Binary files a/src/qt/res/movies/spinner-035.png and b/src/qt/res/movies/spinner-035.png differ