dev.convexstyle.net

YouTube - snapshot (2)

del.icio.us hatena bookmark

前回の Flash 部分に引き続き、hotToast で制作した YouTube - snapshot の jpeg 画像作成部分に関して説明する。


YouTube - snapshot
The screenshot of YouTube - snapshot


【使用技術】
Linux、Zend Framework、Proxy、MySQL、PHP、Smarty、Pear、Flash 8、Javascript、CSS、Photoshop、Express Install あたり

【担当領域】
Flash 8、PHP(Flash 関連部分)、MySQL、Pear、Javascript、CSS、ExpressInstall、デザイン辺りです。他は hotToast の Taro Yamamoto 氏が設定・作成しました。


【ダウンロード】
php_sample.zip (php ファイルが入っています)


(1)
Flash から LoadVars により送信された POST 変数を取得する。


// POST 変数取得
$width = $_POST['w'];
$height = $_POST['h'];
$colors = explode(',' ,$_POST['colors']);

(2)
送信されてきた bitmap の幅・高さ・色情報を基に、jpeg ファイルを作成する。
作成の際、下記の様に 1 pixel 単位で RGB 情報を取得し、imagesetpixel で 作成した新規画像に割り当てる。


// 画像の作成
$image = (function_exists('imagecreatetruecolor')) ?
imagecreatetruecolor($width, $height) : imagecreate($width, $height);
$background = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $background);

// pixel 単位の画像作成

$i = 0;
for($x = 0; $x <= $width; $x++) {
for($y = 0; $y <= $height; $y++) {
// 6 文字以下の場合 0 を追加する
while(strlen($colors[$i]) < 6) $colors[$i] = "0".$colors[$i];
// 16 進法の等価の 10 進法に返す
$r = hexdec("0x".substr($colors[$i], 0, 2));
$g = hexdec("0x".substr($colors[$i], 2, 2));
$b = hexdec("0x".substr($colors[$i], 4, 2));
$pixelcolor = imagecolorallocate($image, $r, $g, $b);
imagesetpixel($image, $x, $y, $pixelcolor);
$i ++;
}
}

(3)
最後に Content-type を jpeg 用に指定し、imagejpeg 関数で jpeg ファイルを作成する。


// jpeg ファイルを作成
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);

この記事関連する書物 from Amazon.co.jp

トラックバック

このエントリーのトラックバックURL:
http://www.convexstyle.net/mt/mt-tb.cgi/4

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)