画像変換
の編集
http://sek-net.no-ip.info/wikiZ+/index.php?%E7%94%BB%E5%83%8F%E5%A4%89%E6%8F%9B
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
AlmaLinux
BracketName
ComicList 検索の DB化
DB 複製
F660A
FTPサーバー
FormattingRules
FrontPage
Get Started with Best Local Dating Website For Quick Sex
Get Started with Online Casual Dating Apps No Cost
Guide To Best Casual Encounters Website Usa
Help
InterWiki
InterWikiName
InterWikiSandBox
L2TP/IPSec
Lara 7→8
Lara Apacheで見れるように
Laravel
Laraインストール
Laraインストール2
Laraサンプルを作る
Laraララ帳要点メモ
MenuBar
MySQL
N54l BIOS UPDATE
NIS
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RP4 Centos stream 9
Raspberry Pi 4
Raspberry Pi Zero(W)
RecentDeleted
SEK
SandBox
SoftEther
Strongswan
Tips
UUID
VirtualBox
WEBカメラ
WEBサーバー
WEBページの設置
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
centos7
centos8
centos9 stream
comic
cron
css
date
dd
defgbrtgert
domain
down.sh
firewalld
format
fstab
fstab の話
gid uid
guide
haproxy
history
html
httpd
httpd.service
httpサーバー
ilfa
install から設定まで
ldap
linux(other)
lyon
mami
mami Dnsmasq
mami FTP Server
mami File Server
mami Mail Server
mami MariaDB 10.2
mami NextCloud
mami PHP 7
mami WEB Server
mami phpMyAdmin
mami subversion
mami update計画
mami 基本設定
mami3インストール
mamiインストール
mami旧インストール
multi
mydns
mysql
mysql 入力
network
nmcli
noip
noip_dcu
php
php file (RPZW)
phpMyAdmin
pound
repo
rpm作成
rsync
samba
serio
ssh
standby
virtual host
wikiZ+ の移行
write-protected
yum upgrade
その他
アセンブラ
カメラを動かす (RPZW)
キャッシュの回避
サーバーTips
データベース
ネガの補正
ピアノ教室
ファイルサーバー
マシン
メモ帳
作業状況
傾向
共通関数
内容
写真をRAMに保存 (RPZW)
初めに (RPZW)
初めに (Raspberry Pi Zero W)
初期設定 (RPZW)
基本情報技術者試験
基本設定
定点カメラ
新生lyon
新生mami
毎日の処理
画像を保存 (RPZW)
画像を転送 (RPZW)
画像変換
発表会ポスター
知恵袋
計画 (RPZW)
課題 (RPZW)
[[定点カメラ]] - カメラ画像を日にち単位に集める function move_file($yesterday, $yesterday2, $DBY, $camera) { $srcdir = "/mnt/dsk4/www/html/" . $camera . "/"; $destdir = "/mnt/dsk4/picture/" . $camera . "/" . $yesterday; $dir_pre= "snapshot_"; $file_pre= "motion-"; $file_dir = $dir_pre.$yesterday; // snapshot_20160316 $file_dir2 = $dir_pre.$DBY; // snapshot_20160315 $file_name = $file_pre.$yesterday2; // motion-2016-03-16 // ディレクトリの作成 mkdir($destdir, 0777); // カメラ画像を日にち単位に集める $dh = opendir($srcdir); while(false !== ($fn = readdir($dh))){ if($fn !== '.' && $fn !== '..' && is_dir($srcdir.'/'.$fn)){ // 対象となるディレクトリかのチェック if(strpos($fn, $file_dir, 0)===0 || strpos($fn, $file_dir2, 0)===0){ $targetdir = $srcdir.$fn; $dh2 = opendir($targetdir); while(false !== ($fn2 = readdir($dh2))){ if($fn2 !== '.' && $fn2 !== '..' && !is_dir($srcdir.'/'.$fn2)){ // 対象となるファイルかのチェック if(strpos($fn2, $file_name, 0)===0){ $srcfile = $srcdir.$fn.'/'.$fn2; $destfile = $destdir.'/'.$fn2; if(filesize($srcfile)){ copy($srcfile, $destfile); } } } } closedir($dh2); } } } closedir($dh); } - 画像にファイル名称を埋め込む。 動画の内容が何時に起きたかを確認するために、時間情報が必要です。~ 画像名称は motion-2015-03-15-11-30-43.jpg という感じに ”年月日時分秒”で作成されているので、タイムコードの代わりに埋め込みます。~ Windows では、IrfanView を使用していましたが、コマンドライン処理に対応していないため、ImageMagick に変更し、php から呼び出しを行っています。~ function fill_filename($yesterday, $camera) { $srcdir = "/mnt/dsk4/picture/".$camera."/".$yesterday; $destdir = "/mnt/dsk4/picture/".$camera."/".$yesterday."/movie"; $file_pre= "motion-"; $file_post= ".jpg"; // ディレクトリの作成 mkdir($destdir, 0777); // ファイル名で整頓する $dh = opendir($srcdir); $array_file = array(); while(false !== ($fn = readdir($dh))){ if($fn !== '.' && $fn !== '..' && !is_dir($srcdir.'/'.$fn)){ if(filesize($srcdir.'/'.$fn) != 0){ array_push($array_file, $fn); } } } closedir($dh); sort($array_file); // ファイル名を埋め込む $destno = 1; $destno5 = sprintf("%05d", $destno); foreach($array_file as $val){ $srcfile = $srcdir.'/'.$val; $destfile = $destdir . '/' . $file_pre . $destno5 . $file_post; $cmd = 'convert ' . $srcfile . ' -fill white -pointsize 12 -gravity SouthWest -annotate 0 %f ' . $destfile ; shell_exec($cmd); $destno ++; $destno5 = sprintf("%05d", $destno); } } - 静止画を連結し、mp4 動画を作成する。 function make_movie($yesterday, $camera) { /* 連番jpeg を avi file に変換 ffmpeg -i /mnt/dsk4/picture/qwatch2/20171125/movie/motion-%05d.jpg -r 29 -vcodec copy /mnt/dsk4/picture/qwatch2/20171125/movie/20171125.avi avi file を mp4 file に変換 ffmpeg -i /mnt/dsk4/picture/qwatch2/20171125/movie/20171125.avi -pix_fmt yuv420p -crf 18 /mnt/dsk1/www/html/qwatch2/tmp/20171125.mp4 */ $srcdir = "/mnt/dsk4/picture/".$camera."/".$yesterday; $destdir = "/mnt/dsk4/picture/".$camera."/".$yesterday."/movie"; $movie_dir = "/mnt/dsk1/www/html/".$camera."/tmp"; $src_file = "motion-%05d.jpg"; $avi_post = ".avi"; $mp4_post = ".mp4"; // ムービーにする $cmd = 'ffmpeg -i ' . $destdir . '/' . $src_file . ' -r 29 -vcodec copy ' . $destdir . '/' . $yesterday . $avi_post; shell_exec($cmd); $cmd = 'ffmpeg -i ' . $destdir . '/' . $yesterday . $avi_post . ' -pix_fmt yuv420p -crf 18 ' . $movie_dir . '/' . $yesterday . $mp4_post; shell_exec($cmd); } - 作業の終わった jpeg を削除。 function delete_file($yesterday, $yesterday2, $DBY, $camera) { $srcdir = "/mnt/dsk4/www/html/" . $camera . "/"; $destdir = "/mnt/dsk4/picture/" . $camera . "/" . $yesterday; $dir_pre= "snapshot_"; $file_pre= "motion-"; $file_dir = $dir_pre.$yesterday; // snapshot_20160316 $file_dir2 = $dir_pre.$DBY; // snapshot_20160315 $file_name = $file_pre.$yesterday2; // motion-2016-03-16 $cmd = 'cd ' . $srcdir ; shell_exec($cmd); $cmd = 'rm -Rf ' . $file_dir2 . "*" ; shell_exec($cmd); $cmd = 'rm -Rf ' . $destdir ; shell_exec($cmd); }
タイムスタンプを変更しない
[[定点カメラ]] - カメラ画像を日にち単位に集める function move_file($yesterday, $yesterday2, $DBY, $camera) { $srcdir = "/mnt/dsk4/www/html/" . $camera . "/"; $destdir = "/mnt/dsk4/picture/" . $camera . "/" . $yesterday; $dir_pre= "snapshot_"; $file_pre= "motion-"; $file_dir = $dir_pre.$yesterday; // snapshot_20160316 $file_dir2 = $dir_pre.$DBY; // snapshot_20160315 $file_name = $file_pre.$yesterday2; // motion-2016-03-16 // ディレクトリの作成 mkdir($destdir, 0777); // カメラ画像を日にち単位に集める $dh = opendir($srcdir); while(false !== ($fn = readdir($dh))){ if($fn !== '.' && $fn !== '..' && is_dir($srcdir.'/'.$fn)){ // 対象となるディレクトリかのチェック if(strpos($fn, $file_dir, 0)===0 || strpos($fn, $file_dir2, 0)===0){ $targetdir = $srcdir.$fn; $dh2 = opendir($targetdir); while(false !== ($fn2 = readdir($dh2))){ if($fn2 !== '.' && $fn2 !== '..' && !is_dir($srcdir.'/'.$fn2)){ // 対象となるファイルかのチェック if(strpos($fn2, $file_name, 0)===0){ $srcfile = $srcdir.$fn.'/'.$fn2; $destfile = $destdir.'/'.$fn2; if(filesize($srcfile)){ copy($srcfile, $destfile); } } } } closedir($dh2); } } } closedir($dh); } - 画像にファイル名称を埋め込む。 動画の内容が何時に起きたかを確認するために、時間情報が必要です。~ 画像名称は motion-2015-03-15-11-30-43.jpg という感じに ”年月日時分秒”で作成されているので、タイムコードの代わりに埋め込みます。~ Windows では、IrfanView を使用していましたが、コマンドライン処理に対応していないため、ImageMagick に変更し、php から呼び出しを行っています。~ function fill_filename($yesterday, $camera) { $srcdir = "/mnt/dsk4/picture/".$camera."/".$yesterday; $destdir = "/mnt/dsk4/picture/".$camera."/".$yesterday."/movie"; $file_pre= "motion-"; $file_post= ".jpg"; // ディレクトリの作成 mkdir($destdir, 0777); // ファイル名で整頓する $dh = opendir($srcdir); $array_file = array(); while(false !== ($fn = readdir($dh))){ if($fn !== '.' && $fn !== '..' && !is_dir($srcdir.'/'.$fn)){ if(filesize($srcdir.'/'.$fn) != 0){ array_push($array_file, $fn); } } } closedir($dh); sort($array_file); // ファイル名を埋め込む $destno = 1; $destno5 = sprintf("%05d", $destno); foreach($array_file as $val){ $srcfile = $srcdir.'/'.$val; $destfile = $destdir . '/' . $file_pre . $destno5 . $file_post; $cmd = 'convert ' . $srcfile . ' -fill white -pointsize 12 -gravity SouthWest -annotate 0 %f ' . $destfile ; shell_exec($cmd); $destno ++; $destno5 = sprintf("%05d", $destno); } } - 静止画を連結し、mp4 動画を作成する。 function make_movie($yesterday, $camera) { /* 連番jpeg を avi file に変換 ffmpeg -i /mnt/dsk4/picture/qwatch2/20171125/movie/motion-%05d.jpg -r 29 -vcodec copy /mnt/dsk4/picture/qwatch2/20171125/movie/20171125.avi avi file を mp4 file に変換 ffmpeg -i /mnt/dsk4/picture/qwatch2/20171125/movie/20171125.avi -pix_fmt yuv420p -crf 18 /mnt/dsk1/www/html/qwatch2/tmp/20171125.mp4 */ $srcdir = "/mnt/dsk4/picture/".$camera."/".$yesterday; $destdir = "/mnt/dsk4/picture/".$camera."/".$yesterday."/movie"; $movie_dir = "/mnt/dsk1/www/html/".$camera."/tmp"; $src_file = "motion-%05d.jpg"; $avi_post = ".avi"; $mp4_post = ".mp4"; // ムービーにする $cmd = 'ffmpeg -i ' . $destdir . '/' . $src_file . ' -r 29 -vcodec copy ' . $destdir . '/' . $yesterday . $avi_post; shell_exec($cmd); $cmd = 'ffmpeg -i ' . $destdir . '/' . $yesterday . $avi_post . ' -pix_fmt yuv420p -crf 18 ' . $movie_dir . '/' . $yesterday . $mp4_post; shell_exec($cmd); } - 作業の終わった jpeg を削除。 function delete_file($yesterday, $yesterday2, $DBY, $camera) { $srcdir = "/mnt/dsk4/www/html/" . $camera . "/"; $destdir = "/mnt/dsk4/picture/" . $camera . "/" . $yesterday; $dir_pre= "snapshot_"; $file_pre= "motion-"; $file_dir = $dir_pre.$yesterday; // snapshot_20160316 $file_dir2 = $dir_pre.$DBY; // snapshot_20160315 $file_name = $file_pre.$yesterday2; // motion-2016-03-16 $cmd = 'cd ' . $srcdir ; shell_exec($cmd); $cmd = 'rm -Rf ' . $file_dir2 . "*" ; shell_exec($cmd); $cmd = 'rm -Rf ' . $destdir ; shell_exec($cmd); }
テキスト整形のルールを表示する