3

PHP gdを使用して透明色の画像を回転させようとしていました。ただし、回転後、画像の透明色は透明ではなくなり、背景も透明ではなくなります。これが私のコードです。

$im = imagecreatefromgif('/images/80-2.gif');
$rotate = imagerotate($im,30,imagecolorallocatealpha($im, 0, 0, 0, 127));
imagegif($rotate,'/images/rotate.gif');
imagedestroy($im);
imagedestroy($rotate);

誰かがそれを機能させるのを手伝ってくれますか? ありがとう。

4

2 に答える 2

3

画像の透明度を維持するには、gdリソースを作成した直後にこれらの関数を呼び出すことで実行できる2つの設定を使用する必要があります

imagealphablending( $im, false );
imagesavealpha( $im, true );
于 2013-01-31T18:59:03.373 に答える
0

alex.michel によって提案された回避策は、gif では機能しません。背景は透明ですが、元の gif のアルファではありません。方眼紙のようなブルー​​です。mishu のソリューションについては、gif では機能しません (php.net マニュアルからの引用):

imagesavealpha()は、 PNG 画像を保存するときに、完全なアルファ チャネル情報 (単色の透明度ではなく) を保存しようとするフラグを設定します。

私がこれを使用するpngの場合、それはうまく機能します:

    $source = imagecreatefrompng($image);
    imagealphablending($source, false);
    imagesavealpha($source, true);
    $rotated = imagerotate($source, $angle, imageColorAllocateAlpha($source, 0, 0, 0, 127));
    imagealphablending($rotated, false);
    imagesavealpha($rotated, true);
    imagepng($rotated, $image);

私はまだgifで機能するものを探しています...

于 2015-11-13T03:58:51.280 に答える