画像を読む 09

画像データを macOSのスピーチ機能で読むプログラムを書いています。前ページでも書いたように、開発の大体の方向はありますが、最終的な形を現在考えている訳ではありません。制作ノートと思って読んでください。誰かの役に立つようにスクリプトを公開しています。



イメージとビデオ(ミリセコンド間隔)

ビデオからミリセコンド間隔でイメージを抜き取って、左側のイメージ・オブジェクトにセットします。

プレイビデオ・ボタン
global gVideoTimerID  -- コマンド「videoTimer」をストップするグローバル
on mouseUp pButtonNumber
   --ビデオプレイヤーがセットされていない時ハンドラーを抜ける
   emptyFileName "tVideo" 
   -- ビデオプレイヤーを動かす
   start player "tVideo"
   -- 「videoTimer」ミリセコンド間隔でビデオのコントローラを動かす
   videoTimer
end mouseUp

command videoTimer -- コマンド「videoTimer」
   -- ハイライト・ボタンから数値を「tInterval」に
   put the hilitedButtonName of grp "tInterval" into tInterval
   send videoTimer to me in tInterval milliseconds
   put the result into gVideoTimerID
   set the thumbpos of sb "timeBar" to the currentTime of player "tVideo"
   
   -- スナップ・ショットでイメージを「tInterval milliseconds」ごとに設定する
   snapshotVideo
   
   -- ビデオが最後まで行ったらストップ
   if the thumbpos of sb "timeBar" is the endValue of sb "timeBar" then
      cancel gVideoTimerID   -- コマンド「videoTimer」キャンセル
      set the thumbpos of sb "timeBar" to 0
      set the currentTime of player "tVideo" to the 0
      stop player "tVideo"
      -- スナップ・ショットで初めに戻ったイメージを設定する
      snapshotVideo 
   end if
end videoTimer


ポウズビデオ・ボタン
global gVideoTimerID   -- コマンド「videoTimer」をストップするグローバル
on mouseUp
   set the paused of player "tVideo" to true
   cancel gVideoTimerID    -- コマンド「videoTimer」キャンセル
   
   -- スナップ・ショットでポウズしているイメージを設定する
   snapshotVideo 
end mouseUp


ストップビデオ・ボタン
global gVideoTimerID  -- コマンド「videoTimer」をストップするグローバル
on mouseUp 
   stop player "tVideo" 
   
   -- ビデオの時間を0にして元に戻す
   set the currentTime of player "tVideo" to 0
   cancel gVideoTimerID   -- コマンド「videoTimer」キャンセル
   set the thumbpos of sb "timeBar" to 0
   set the currentTime of player "tVideo" to the 0
   
   -- スナップ・ショットで初めに戻ったイメージを設定する
   snapshotVideo 
end mouseUp


ビデオの進行状態を見せるバーは、プレイビデオ・ボタンで自動的に進む設定にしていますが、手動で動かしてビデオの時間をコントロールできるようにもしています。
タイムバー・スクリプト
global gVideoTimerID  -- コマンド「videoTimer」をストップするグローバル
on mouseUp -- マウスアップした時
   get the thumbpos of sb "timeBar" 
   set the currentTime of player "tVideo" to it
   
   -- スナップ・ショットでバーの止めたイメージを設定する
   snapshotVideo 
end mouseUp

on mouseDown -- マウスダウンした直後
  -- コマンド「videoTimer」をストップする
  cancel gVideoTimerID 
end mouseDown


スタックに書き込むファンクション、コマンド
-- LiveCodeファイルがどこにあるかのファンクション
-- スナップ・イメージをテンポラリーで保存するパスを得る
function theFolderPath
   if the environment is "development" then  
      set the itemDel to "/"
      return item 1 to -2 of the filename of this stack
   else   
      put the fileName of this stack into tPath
      set the itemDel to "/"
      switch the platform
         case "MacOS"
            put item 1 to -5 of tPath into tResult
            break
         case "Win32"
            put item 1 to -2 of tPath into tResult
            break
      end switch
      return tResult
   end if
end theFolderPath

-- プレイヤー・オブジェクトにビデオ・ファイルがリンクされていない場合
-- ハンドラーから抜ける
command emptyFileName pPlayerName
   if the filename of player pPlayerName is empty then
      beep
      exit to top
   end if
end emptyFileName


カード1に書き込むファンクション、コマンド
-- ドラッグ&ドロップができるファイルにする
on dragEnter
   set the acceptDrop to true
end dragEnter

on dragDrop
   put dragData["files"] into tPath
   
   -- ターゲットがプレイヤー・オブジェクトの場合
   if word 1 of the target is "player" then
      set the filename of the target to ("file://"&tPath) 
      snapshotVideo 
      set the tOriginalData of image "mosaic" to  \
         the imageData of image "mosaic"
      set the endTime of player "tVideo" to the duration of player "tVideo"
      set the endvalue of sb "timeBar" to the duration of player "tVideo"
      
   -- その他のオブジェクト、ビープを鳴らして抜ける
   else
      beep
      exit to top
   end if
end dragDrop

-- ビデオ・イメージをスナップショットしてファイルのある場所の「snap」フォルダーに入れる
command snapshotVideo 
   export snapshot from rect globalLoc(the topLeft of player "tVideo"), \
         globalLoc(the bottomRight of player "tVideo") to  \
         file theFolderPath() & "/snap/videoSnap.jpg" as JPEG
   set the text of image "mosaic" to url ("binfile:" & theFolderPath() \
         & "/snap/videoSnap.jpg")   
 end snapshotVideo



ピクセル・カラー ポエト

モザイク・ビデオとセカンド・ウインドウ




アーチスト:小島健治 / Artist: Kenji Kojima

アーチスト:小島健治
kenjikojima.com


クリエイティブ・コモンズ
Attribution-NonCommercial-NoDerivatives

Click and Go to PayPal

日本からのドネーションは こちらをクリック

LiveCode 6 初心者開発入門