ホームページ >バックエンド開発 >PHPチュートリアル >PHP でアルファを失わずに透明度を保ったまま PNG のサイズを変更するにはどうすればよいですか?

PHP でアルファを失わずに透明度を保ったまま PNG のサイズを変更するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-18 02:07:01386ブラウズ

How to Resize PNGs with Transparency in PHP Without Losing Alpha?

アルファを失わずに PHP で透明度を指定して PNG のサイズを変更する方法

PHP で透明度を指定して PNG 画像のサイズを変更しようとすると、多くのユーザーが問題に遭遇します背景色が黒に変わります。この記事では、この問題に対処し、解決策を提供します。

重要なのは、透明度を割り当てる前に、画像ブレンド モードとアルファ チャネル保存フラグを適切に設定することです。

更新されたコードは次のとおりです。

function resizePNG($image, int $newWidth, int $newHeight) {
    // Create a new true color image
    $newImg = imagecreatetruecolor($newWidth, $newHeight);

    // Disable blending and enable alpha saving
    imagealphablending($newImg, false);
    imagesavealpha($newImg, true);

    // Allocate transparent color
    $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);

    // Fill the new image with transparent color
    imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent);

    // Get the width and height of the original image
    $src_w = imagesx($image);
    $src_h = imagesy($image);

    // Copy and resize the original image onto the new image
    imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h);

    // Return the new resized image
    return $newImg;
}

この更新されたコードを使用すると、アルファ チャネルに影響を与えることなく透明度のある PNG 画像のサイズを変更でき、透明度が確実に保持されます。

以上がPHP でアルファを失わずに透明度を保ったまま PNG のサイズを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。