[PHP-users 28597] (無題)

1000@e-liveshot.com 1000 @ e-liveshot.com
2006年 3月 1日 (水) 18:19:00 JST


初めて質問します。VINAKAと申します。
レベルはど素人です。。。
現在画像の処理について勉強をしていまして、どうにもこうにも、うまいこといかな
くて困っています。

処理内容

1.jpg(背景画像)と2.jpg(物体の画像)が存在する。これを重ね合わせる。
重ね合わせて表示させる(本当は保存したい)。
※画像サイズは両方とも同じ大きさ96*96

試行1
2.jpgの背景を透明化するために2.jpgから背景色を抽出して、透明化を試みた。
次にimagecopymergeを使い、1.jpgに重ねた。
※なぜ別ファイルを作成しなかったと言うと、作成できなかった。
imagejpegで存在しないファイルを作成しようと試みたが結果は
Warning imagejpeg():Unable to open '5.jpg' for writing in
とでてしまった。

結果
画像は重なるが色が薄くなってしまう。

スクリプト
<?php
$img = "1.jpg";
$img2="2.jpg";
$src_im = imagecreatefromjpeg("$img");
$dst_im = imagecreatefromjpeg("$img2");

$cid = imagecolorat($dst_im,50,50);
imagecolortransparent($dst_im,$cid);
imagejpeg($dst_im,"2.jpg");

$src_im2 = imagecreatefromjpeg("1.jpg");
$dst_im2 = imagecreatefromjpeg("2.jpg");


imagecopymerge($dst_im2,$src_im2,0,0,0,0,96,96,50);
imagejpeg($dst_im2,"1.jpg");

?>


試行2
試行1と同じように、背景色を透明化して、
imagecopyで重ねてみた。

結果
重ならず、1.pngが2.pngの画像に変わってしまった。

スクリプト
<?php

$src_im = imagecreatefrompng("1.png");
$dst_im = imagecreatefrompng("2.png");


imagecolortransparent($dst_im);
imagepng($dst_im,"2.png");

$src_im2 = imagecreatefrompng("1.png");
$dst_im2 = imagecreatefrompng("2.png");

imagecopy($dst_im2,$src_im2,0,0,0,0,96,96);
imagepng($dst_im2,"1.png");

print "<img src=\"1.png\">";
?>

ど素人で申し訳ございません。
どうしても、出来なくて、書籍も関数リファレンスなども見ましたが、できません。
どなたかお助けいただけないでしょうか???
ほんとうに、本当によろしくお願いします。




PHP-users メーリングリストの案内