./topimag900x150

www.h2caster.net

Linux&LAMP PHP&MySQL GPS&PDA BikeTrial blog Others

PHP jpeg画像の表示1

PHP でjpegファイルを読み、サイズの変更、切り取りなどの処理をした後表示させる。

jpegファイルを読み込み、一部を切り取り表示する

getimagesize()

list($width, $height, $type, $attr) = getimagesize("map.jpg");

getimagesize()関数で、map.jpgのサイズを取得している。取得した結果はこの場合、$width(幅)、$height(高さ)などの変数に入ることになる。

imagecreatefromjpeg()

$image_base_map = imagecreatefromjpeg("map.jpg");

imagecreatefromjpeg()関数で、map.jpgを変数$image_base_ma読み込み、php内部で扱うjpegファイルを作る。

imagecreate()

$image_out_map = imagecreate( $width/10,$height/10);

imagecreate()関数で、指定したサイズの変数$image_out_mapを作る。これは、まだ中身がないので、表示しても真っ黒の四角が出てくるだけ。ここでは元のmap.jpgサイズの1/10のサイズにしている。引数はx,yの二つだけ。まだ単純である。

imagecopyresized()

imagecopy($image_out_map, $image_base_map, 0, 0, 0, 0, $width/10,$height/10);

imagecopy()関数で、画像を切り取りながらphpの変数から変数へコピーしている。パラメーターは順に(コピーする側の変数名、コピーされる側の変数名、コピーする側の始点座標x,y、コピーされる側の始点座標x,y、切り取る大きさx,y)となる。ああ面倒!。ここで、x,yはピクセル単位。座標は画面の左上が0.0となる。また、元のサイズの1/10の大きさだけ切り取っている。

imagejpeg()

imagejpeg($image_base_map,"old_map.jpg");
imagejpeg($image_out_map,"new_map.jpg");

imagejpeg()関数で、新たにphp変数からjpegファイルを作る。これはカレントディレクトリに書き込まれるみたいなので、二つのファイルがjpegファイルとして残る。また、この二つのファイルを作ったユーザーはapacheとなるので、ファイルが入るディレクトリのパーミッションをそれなりに設定する。

imagedestroy()

imagedestroy($image_base_map);
imagedestroy($image_out_map); 

imagedestroy()関数で、変数を開放しておく。(メモリを食うので)

HTMLで表示

<img src = "new_map.jpg" border="0">
<img src = "old_map.jpg" border="0">

あとは普通にHTMLで表示させる。

jpegファイルを読み込み、サイズを変えて表示させる

<?php

list($width, $height, $type, $attr) = getimagesize("map.jpg");

$image_base_map = imagecreatefromjpeg("map.jpg");

$image_out_map = imagecreate( $width/10,$height/10);

imagecopyresized($image_out_map, $image_base_map, 0, 0, 0, 0,
                   $width/10,$height/10, $width, $height);実際には1行
imagejpeg($image_base_map,"old_map.jpg");
imagejpeg($image_out_map,"new_map.jpg");

imagedestroy($image_base_map);
imagedestroy($image_out_map);

?> 

<img src = "new_map.jpg" border="0">
<img src = "old_map.jpg" border="0">

imagecopyresized()

Copyrite 2005 caster productions

www.h2caster.net