透過画像の取り扱い

2012/02/27 | PHPの基本

PHPで画像を扱えるのはいいとして、透過画像を扱う際のメモ書き。

画像リソースはimagecreatetruecolorで作成。

$imgObj = imagecreatetruecolor($width, $height);

透明色で塗りつぶすのはこんな感じ。

$bg = imagecolorallocatealpha($imgObj, 0, 0, 0, 127);
imagefill($imgObj, 0, 0, $bg);

画像を上に重ねるときはimagecopy。

$overlay = imagecreatefrompng($path);

imagecopy($imgObj, $overlay, 0, 0, 0, 0, $width, $height);

あと以下も必要かな。

imagealphablending($imgObj, false);
imagesavealpha($imgObj, true);

imagecopymergeがいいかと思ったけど、これだと上手くいかなかった。

PHPでファイルが壊れる時に

とある仕事でデータをファイルに書いて保存する処理を組み込んだ。

ある時、「ファイルが壊れるんだけど」という連絡をいただき、いろいろ調べたのだが結局原因がわからずじまいだった。もちろんflockしてるし、ファイルバッファも0にしている。アクセス数が極端に多いわけでもないので、偶発的に壊れるのであればわかるけれど、時々壊れるというのだから原因がわからない。で、調べてみた。

どうやらマルチスレッド環境にflockが対応していないということに起因するかもしれない、ということがわかった。apacheの設定を調べてみなくてはいけない。preforkならOK、それ以外だとアウト、という感じでいいんだろうか。

どうしてもダメならSQLiteに変更するか。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net