« 2007年08月 | メイン | 2007年10月 »

2007年09月27日

smarty for文

{section name=cnt start=0 loop=10}
処理!
{/section}

こんなんで出来るらしい

投稿者 muuming : 19:23 | コメント (0)

PEAR (Pager)

require_once("Pager/Pager.php");

$sql .= " offset ".($page-1)*$limit;
$sql .= " limit ".$limit;

$page ページ番号


$params = array(
'totalItems' => $sum,  合計渡す
'perPage' => $limit,   
'delta' => 8,        ページ番号の上限
'append' => true,
'separator' => '|',     名前の通り
'spacesBeforeSeparator' => '2',  空白の数
'spacesAfterSeparator' => '2',  空白の数
'clearIfVoid' => true,
'urlVar' => 'page',  GET値の変数名
//'mode' => 'Sliding',  使ってみて確かめるべし
'mode' => 'Jumping',  使ってみて確かめるべし
'prevImg' => '<<前のページ',  前に戻るを好きに変えれる
'nextImg' => '次のページ>>',  次へを好きに変えれる
'fileName' => 'hr.php',          ファイルネーム指定
);

$pager = & Pager::factory($params);  

$links = $pager->getLinks();  リンク作ってくれますよ

$HTML->assign("links",$links["all"]);  $links["all"]これで全部吐き出し

投稿者 matsu : 12:48 | コメント (0)

2007年09月21日

ffmpeg-php

http://phpspot.org/blog/archives/2007/03/phpffmpegffmpeg.html

よりメモ

define('FFMPEG_BINARY', '/usr/local/bin/ffmpeg');
define('FFMPEG_FLVTOOLS_BINARY', '/usr/bin/flvtool2');
require_once 'ffmpeg.php';

$files_to_process = array(
'xxxxx/ffmpeg/www/example/to-be-processed/MOV00007.3gp',
'xxxxx/ffmpeg/www/example/to-be-processed/Video000.3gp'
);

$video_output_dir = 'xxxxx/ffmpeg/www/example/processed/videos/';
$bitrate = 64;
$samprate = 44100;
$ffmpeg = new ffmpeg();

$ffmpeg->on_error_die = FALSE;

foreach($files_to_process as $file)
{
$filename = basename($file);
$filename_minus_ext = substr($filename, 0, strrpos($filename, '.'));
$ok = $ffmpeg->setInputFile($input_dir.$file);
if(!$ok)
{
echo $ffmpeg->getLastError()."
rn";
$ffmpeg->reset();
continue;
}
$ffmpeg->setVideoOutputDimensions(320, 240);

$ffmpeg->setFormatToFLV($samprate, $bitrate);
$ok = $ffmpeg->setOutput($video_output_dir, $filename_minus_ext.'.flv', TRUE);
if(!$ok)
{
echo $ffmpeg->getLastError()."
rn";
$ffmpeg->reset();
continue;
}
$result = $ffmpeg->execute(TRUE);

if(!$result)
{
echo $ffmpeg->getLastError()."
rn";
$ffmpeg->reset();
continue;
}

echo 'Video converted... '.array_shift($ffmpeg->getLastOutput()).'
'."rn";
$ffmpeg->reset();
}
?>


ffmpeg::setInputFile - 入力ファイルを設定
ffmpeg::setFormatToFLV - フォーマットをFLVに指定
ffmpeg::setOutput - 出力の設定
ffmpeg::execute - 変換の実行

投稿者 muuming : 19:01 | コメント (0)

2007年09月20日

php エラーレベル

たとえばphp.iniと同じように、次のように書いたとしても、期待したとおりに動作しません。

php_value error_reporting E_ALL

正しくは次のようにします。

php_value error_reporting 2047

.htaccessを読み込む段階ではE_ALLなどの定数が未定義になっているため、値を直接指定する必要があるとのことです。

ちなみに各エラーレベルの値は次のようになっています。

1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT

投稿者 muuming : 12:43 | コメント (0)

2007年09月11日

smarty アウトプットフィルター

スマーティー機能拡張で表示直前にユーザーが作った関数に
かけてから表示できるらしい

入力時もできるらしい。

ということで入出力がsjisで処理中はEUCの場合
例)
//********************************
// 出力文字コード変換
//********************************

//入出力がsjis
$HTML->register_prefilter("convert_func_from");
$HTML->register_outputfilter("convert_func");


//*****************************
// 表示
//*****************************
$HTML->display("timetable.html");
//**************************************************************************
// 変換用ユーザー関数 smarty のプリフィルタ・アウトプットフィルタで使用
//**************************************************************************
function convert_func($buff, &$smarty){
return mb_convert_encoding($buff,"SJIS","EUC-JP");
}

function convert_func_from($buff, &$smarty){
return mb_convert_encoding($buff,"EUC-JP","SJIS");
}

register_outputfilter の部分で直前にかけるユーザー定義関数
ここでは文字コード変換してる。

投稿者 muuming : 12:21 | コメント (0)

2007年09月07日

動画のサイズとか色々とる

ソース元がなくなった場合の目もメモ
http://www.phppro.jp/phptips/vol50/0c64d12cb4f4d099b65aff32cd2b967e

2. ffmpeg-phpで動画のデータを取得しよう

オープンソースで動画や音声を変換するツールと言えば、ffmpegがあります。多彩なコーデックに対応しており、いろいろなものに使われています。

このffmpegの機能の一部をPHPで簡単に使えるようにしたエクステンションがffmpeg-phpです。これを使えば、少ないコードで簡単に、動画のプロパティや画像を取得できます。

では、早速使い方の解説です。

ffmpeg-phpのインストールには、ffmpeg本体が必要で、ffmpegのコンパイル時に

--enable-shared

をつけておく必要があるのでご注意ください。

ffmpegの準備ができたら、ffmpeg-phpのソースコードを

http://ffmpeg-php.sourceforge.net/

からダウンロード、解凍して、

phpize
./configure
make
make install

とするだけでインストールは終了です。

動作の確認は、解凍したffmpeg-phpのディレクトリにあるtests と test_ffmpeg.phpをドキュメントルートにコピーしてアクセスし、テスト用ファイルのデータが出力されれば正常です。

次に、実際の使い方です。

dl("ffmpeg." . PHP_SHLIB_SUFFIX); //エクステンションをロード

$movie_path = 'tests/test_media/test.avi'; //画像のパス

$movie = new ffmpeg_movie($movie_path); //インスタンス生成

echo $movie->getFileName(); //ファイル名取得、表示
echo "
";
echo $movie->getFrameRate(); //フレームレート表示

/* 実行結果

tests/test_media/test.avi
24

*/

以上、わずか数行書くだけで、test.aviのプロパティが取得できます。

次に、画像の取得と表示方法です。(GDが必要です)

$frame = $movie->getFrame(100);
$image = $frame->toGDImage();

getFrameで取得するフレームを指定し、toGDImageでresouseを返しますので、

ob_end_clean();
header('Content-Type: image/jpeg');
imageJpeg($image,null,100);
imageDestroy($image);

とすると、画像を表示することができます。

これらを応用すると、例えば、あるディレクトリに画像を置くだけで、動的に画像のタイトルを取得し、画像を出力してサムネイルを作成したり、動画のデータを自動的にデータベースに入力するなどの使い方がでます。

また、ここで紹介したものはほんの一部ですので、他に使用できるメソッドなどは、公式のAPIドキュメント

http://ffmpeg-php.sourceforge.net/apidoc.php

をご覧ください。

ffmpeg-phpは面倒な画像取得などを少しのコードで実現できるので、機会があれば使ってみてはいかがでしょうか。

投稿者 muuming : 16:38 | コメント (0)