2

私は何か間違ったことをしているのか、それともこれが私が得ようとしているのと同じくらい良い結果なのか疑問に思っています. 左側の両方の PNG は 95x111 です。ロボットの画像の周囲に 5px 程度の透明ピクセルのパディングがありますが、結合時に問題が発生しているようです。

ここに画像の説明を入力

 $avatar = imagecreatefrompng("../guy.png");
 $borderImg = imagecreatefrompng("../frame.png");

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

 imagecopyresampled($avatar,$borderImg,  0, 0, 0, 0, 95, 111,95, 111);
 imagepng($avatar, $newfilenameBig); 

imagealphablending と imagesavealpha の考えられるすべての組み合わせを試しました。$avatar を imagesavealpa= true に設定すると、画像がすべて表示されず、フレームだけが表示されます。奇妙に思えませんか?これは私がPHP GDを使用する限りですか?

更新: 24 ビット モードを使用して PS で両方のイメージを手動で作成すると、望ましい結果が得られます。イメージコピーなどを使用してこれを行う方法はありますか?

4

1 に答える 1

0

次のコードを試してみてください。

    $幅 = 95;
    $高さ = 111;

    $base_image = imagecreatefrompng("../guy.png");
    $top_image = imagecreatefrompng("../frame.png");

    imagesavealpha($top_image, false);
    imagealphablending($top_image, false);
    imagecopy($base_image, $top_image, 0, 0, 0, 0, $width, $height);
    imagepng($base_image, "merged.png");

于 2012-03-23T16:36:50.450 に答える