android開機動畫包製作工具實現
# coding=utf-8 __author__ = 'snomy' import os import shutil import Image import ImageFilter import zipfile import sys # ---------------------- 函式 -------------------------- def isFullBlack(xy, image): point_cnt = 0 xy_left = (xy[0]-1, xy[1]+0) xy_right = (xy[0]+1, xy[1]+0) xy_up = (xy[0]+0, xy[1]-1) xy_bottom = (xy[0]+0, xy[1]+1) lst = [xy, xy_left, xy_right, xy_up, xy_bottom] for i in lst: xxx = i[0] yyy = i[1] if i[0] < 0: xxx = 0 if i[0] >= image.size[0]: xxx = xy[0] if i[1] < 0: yyy = 0 if i[1] >= image.size[1]: yyy = xy[1] if image.getpixel((xxx, yyy)) != (0, 0, 0, 255): point_cnt += 1 return point_cnt # ---------------------- 程式執行 -------------------------- # 步進多少像數分割圖片 MOVE_PIX = 32 # 判斷logo.png是否存在,不存在退出 if not os.path.exists("logo.png"): print "logo.png is not existent" sys.exit() # 判斷guang.png是否存在,不存在退出 if not os.path.exists("guang.png"): print "guang.png is not existent" sys.exit() # 1. 輸入每秒顯示幾張 if len(sys.argv) >= 2: pics_per_second = eval(sys.argv[1]) if pics_per_second <= 0: print "too small" sys.exit() if pics_per_second > 60: print "too large" sys.exit() if 1<= pics_per_second <= 60: print pics_per_second, "frame/s" else: while True: pics_per_second = input("frame/s: ") if pics_per_second <= 0: print "too small" if pics_per_second > 60: print "too large" if 1<= pics_per_second <= 60: break Im = Image.open("logo.png") print "logo.png" print Im.mode, Im.size, Im.format Im_guang = Image.open("guang.png") print "guang.png" print Im_guang.mode, Im_guang.size, Im_guang.format # 先刪除資料夾 if os.path.exists("part0"): shutil.rmtree("part0") # 建立資料夾 os.mkdir("part0") # 判斷檔案是否存在 if os.path.exists("desc.txt"): os.remove("desc.txt") # 2. 生成 desc.txt 檔案 hDescFile = open("desc.txt", mode='w') hDescFile.write("%d %d %d\n" % (Im.size[0], Im.size[1], pics_per_second)) hDescFile.write("p 0 0 part0\n") hDescFile.close() # 2.5 判斷是否存在掩膜圖片,沒有則生成掩膜圖片,有則使用現有的 img_mask = Image.new('RGBA', Im.size) if not os.path.exists("mask.png"): print "mask.png is not existent" img_mask.paste(Im, (0, 0)) for height in range(img_mask.size[1]): for width in range(img_mask.size[0]): #if img_mask.getpixel((width, height)) != (0, 0, 0, 255): cnt = isFullBlack((width, height), Im) if cnt == 5: img_mask.putpixel((width, height), ((0, 0, 0, 0))) elif cnt == 4: img_mask.putpixel((width, height), ((0, 0, 0, 50))) elif cnt == 3: img_mask.putpixel((width, height), ((0, 0, 0, 100))) elif cnt == 2: img_mask.putpixel((width, height), ((0, 0, 0, 150))) elif cnt == 1: img_mask.putpixel((width, height), ((0, 0, 0, 200))) #img_mask.save("img_mask.png") else: print "use mask.png" img_mask = Image.open("mask.png") print img_mask.mode, img_mask.size, img_mask.format # 3. 生成 每張圖片 index = 0 while True: if MOVE_PIX*index > Im.size[0]: break new_img = Image.new('RGB', Im.size) new_img.paste(Im, (0, 0)) new_img.paste(Im_guang, (MOVE_PIX*index, 0), Im_guang) new_img.paste(img_mask, (0, 0), img_mask) save_path = "part0/%04d.png" % index print save_path new_img.save(save_path, "PNG") index += 1 #end while # 4. 生成zip檔案 if os.path.exists("bootanimation.zip"): os.remove("bootanimation.zip") zpfd = zipfile.ZipFile("bootanimation.zip", mode='w', compression=zipfile.ZIP_STORED) zpfd.write("desc.txt") startdir = "part0" for dirpath, dirnames, filenames in os.walk(startdir): for filename in filenames: zpfd.write(os.path.join(dirpath, filename)) zpfd.close() print " -------- make bootanimation.zip OK --------" # 5. 清理檔案 if os.path.exists("part0"): shutil.rmtree("part0") if os.path.exists("desc.txt"): os.remove("desc.txt")
相關推薦
android開機動畫包製作工具實現
# coding=utf-8 __author__ = 'snomy' import os import shutil import Image import ImageFilter import zipfile import sys # ---------------------- 函式 -----
Android開機三個階段的開機Logo與開機動畫的製作
480 427 30 ---這裡的480代表圖片的畫素(大小)寬度,427代表圖片的畫素(大小)高度,30代表幀數; p 1 0 part0 ---這裡的p代表標誌符,1代表迴圈次數為1次,0代表階段間隔時間為0,part0代表對應的資料夾名,為第一階段動畫圖片目錄; p 0 0 part
Android開機動畫的顯示(一)
參考部落格 主要是跟著老羅的部落格,深入研究學習下Android的UI架構,徹底搞清楚繪製流程。鑑於老羅的部落格寫成時間有點久,分析的Andorid版本也有點低。現在從Android P的原始碼開始分析。 同樣的,從Android啟動顯示的畫面順序依次分析。
Android開機動畫的顯示(二)
參考部落格 接著上面Android開機動畫的顯示(一)分析,開機動畫怎麼結束的,又是如何顯示桌面(鎖屏介面)的。 一、程式碼流程 在前面的 Android開機流程 可以知道,SystemServer最後會呼叫到AMS.systemReady 1.1 AMS.
安裝包製作工具 SetupFactory 詳解
轉自:http://www.cnblogs.com/SavionZhang/p/4106338.html?utm_source=tuicool&utm_medium=referral Setup Factory 是一個強大的安裝程式製作工具。提供了安裝製作嚮
Android開機動畫
Android系統的開機動畫可分為三個部分,kernel啟動,init程序啟動,android系統服務啟動。這三個開機動畫都是在一個叫做 幀緩衝區(frame buffer)的硬體裝置上進行渲染繪製的。http://hovertree.com/menu/android/ 在Linux核心中,每一個硬
android開機動畫啟動流程
從android的Surface Flinger服務啟動分析知道,開機動畫是在SurfaceFlinger例項通過呼叫startBootAnim()啟動的。 下面我們就一起學習BootAnim是如何啟動和結束的,我精讀程式碼前都喜歡先描出框架圖,以此圖為基礎再去
android 屬性動畫 vs 延時實現動畫
屬性動畫 我們用屬性動畫實現動畫常用的程式碼: ObjectAnimator.ofFloat(targetView,"translateX",0,100) .setDuration(1000).start(); 屬性動畫一般只能
Android開機動畫流程
Android系統在啟動過程中,最多可以出現三個畫面。第一個開機畫面是在核心啟動的過程中出現,是一個靜態的畫面;第二個畫面是在init程序啟動的過程中出現的,也是一個靜態的畫面;第三個畫面是在系統服務啟動的過程中出現 ,是一個動態的畫面。這三個畫面都是在一個被稱
windows 安裝包製作工具
各種安裝包打包釋出工具(安裝製作工具)評測 作為程式設計師,經常遇到需要打包自己勞動成果的時候,這也算是廣大碼工辛苦奔波之後的殺青之作,收尾之筆。因此,安裝包製作的好壞也直接關係到整個工程專案的質量。這裡HAWARK STUDIO對幾種常見的程式打包封裝工具進行
Android OTA升級包製作指令碼詳解(一,引數解析)
寫在前面: “build/tools/releasetools/ota_from_target_files -u lk.bin -n target.zip update.zip”這是製作整包的命令,很顯然這裡支援lk升級。本系列博文主要對該命令的執行流程及原理進
Android 開機動畫客製化
Android開機動畫總共有三個過程。第一個開機動畫是在Kenel啟動時顯示的,第二個開機動畫是在init程序啟動時顯示的,這兩個都是靜態圖片。第三個動畫是在系統服務啟動過程中顯示的,他是一個動態圖片,也是我們關注比較多的動畫。 關於動畫的播放,主要涉及f
Cordova外掛開發(2)-Android外掛安裝包製作詳解
本篇文章講述的是如何製作自己的Cordova外掛安裝包(Android),具體內容包括以下三個方面: 1,安裝和使用plugman; 2,開發自己的Cordova外掛安裝包; 3,外掛安裝包的安裝與解除安裝; 本篇文章以自定義加密壓縮檔案外掛的實踐過程為例,本人不會IOS,
使用 CSS3 實現超炫的 Loading(載入)動畫效果以及cs3的線上製作工具
loading: http://www.cnblogs.com/lhb25/p/loading-spinners-animated-with-css3.html http://www.cnblogs.com/lhb25/archive/2011/11/22/best-aw
Android ListView動畫實現方法
rri pan 自己 data- src def popu 動畫 onclick 在Android中listview是最經常使用的控件之中的一個,可是有時候我們會認為千篇一律的listview看起來過於單調,於是就產生了listView動畫,listview載入了動畫會
android縮放動畫的兩種實現方法
get odi omx rac tor Coding eight rpo odin 在android開發。我們會常常使用到縮放動畫,普通情況下縮放動畫有兩種實現方式。一種是直接通過java代碼去實現,第二種是通過配置文件實現動畫,以下是兩種動畫的基本是用法: Ja
Android ListView動畫特效實現原理及源代碼
stat 每一個 應該 所有 ner haar .get tde pri Android 動畫分三種,當中屬性動畫為我們最經常使用動畫,且能滿足項目中開發差點兒所有需求,google官方包支持3.0+。我們能夠引用三方包nineoldandr
Xamarin.android Activity動畫切換效果實現
omx over tails detail ons too ide xamarin Coding http://blog.csdn.net/esunshine1985/article/details/44302903 1.在Resources——values下新建sty
Android仿騰訊手機管家實現桌面懸浮窗小火箭發射的動畫效果
無標題 服務 ice null obj activit 中間 ktr https 功能分析: 1、小火箭遊離在activity之外,不依附於任何activity,不管activity是否開啟,不影響小火箭的代碼邏輯,所以小火箭的代碼邏輯是要寫在服務中; 2、小火箭掛載在手機