menu
書いてる野郎
orebike@gmail.com
Nokia 6630 で使えるライフスライス用のスクリプト。
たぶん Nokia 6630 の特性だとは思うが、大量ファイルが存在するディレクトリへのアクセスが非常にノロイです。 これはどのアプリを使っても遅い
ライフスライスだと2日連続でライフスライスする場合は注意 1ディレクトリに1000に近い数のファイルがあると、画像の書き込みに50秒以上かかるようになってしまう。 これだと、撮影間隔を短く設定していても、全然長くなる場合があるので注意。
ご勝手にどうぞ
本のほうのカメラサンプルコードにはパス指定の記述に誤りがある。バックスラッシュは2つ重ねないとエスケープになってしまう。
出版社の mycom に正誤情報がなかった。
「lsImage」としているディレクトリがないとコケるので作っておく
#時間系 import time #ファイル操作系 import os #標準のUI import appuifw #携帯固有の機能 import e32 #画像の扱い import graphics #カメラコントロール import camera #-----importここまで----------------------- #ライフスライスカメラクラス宣言 #本丸写しでは芸がないのでクラス class LifeSliceCamera: #待ち秒数。 #待ち秒数はインスタンス間で不変なのでクラス属性に intervalSecond = 60 #動作中フラグ #runFlg #撮影間隔を設定 def __init__(self, _intervalSecond): #nullチェック if _intervalSecond != None: self.intervalSecond = _intervalSecond #違うならデフォルト値 else: self.intervalSecond = LifeSliceCamera.intervalSecond #ライフスライス開始 def startLifeSlice(self): #動作中フラグを立てる self.runFlg = 1 #撮影開始 self.takePictures() #ライフスライス終了 def stopLifeSlice(self): #フラグを倒す self.runFlg = 0 #写真を撮り続ける def takePictures(self): #ファイル名の保存場所定義 fileName = "" #ディレクトリ名 dirName = "" #動作ループ開始 while self.runFlg: #写真を撮る myImage = camera.take_photo() #逆さまなので180度まわす(状況に応じて) myImage = myImage.transpose(graphics.ROTATE_180) #ファイル名の決定(年月日時分秒jpgにする) fileName = time.strftime("%Y%m%d%H%M%S", time.localtime()) #日付ごとにディレクトリを切る dirName = time.strftime("%Y%m%d", time.localtime()) if not os.path.exists("e:\\lsImage\\" + dirName): print "Dir exist" os.mkdir("e:\\lsImage\\" + dirName) print fileName #保存 コールバックなし(同期処理) myImage.save("e:\\lsImage\\" + dirName + "\\" + fileName + ".jpg") #休みを入れる e32.ao_sleep(self.intervalSecond) #--------------------------------------------- #終了 print "end" #ここからメイン #撮影間隔を決めるダイアログ表示 intervalSecond = appuifw.query(unicode("撮影間隔設定(秒)", "utf-8"), "number") #ライフスライスカメラオブジェクトの作成 lsc = LifeSliceCamera(intervalSecond) #キャンセルボタンに終了のメソッドを関連付ける appuifw.app.exit_key_handler = lsc.stopLifeSlice #開始 lsc.startLifeSlice()