現在の位置: ホーム> 最新記事一覧> 透明な画像をスケーリングするために、ImageColorallocatealpha()とImageCopyResampled()を組み合わせます

透明な画像をスケーリングするために、ImageColorallocatealpha()とImageCopyResampled()を組み合わせます

M66 2025-05-25

PHPでは、特に画像スケーリング、トリミング、その他の操作について、画像処理機能は非常に強力です。その中で、 ImageColorallocatealpha()ImageCopyResampled()は、一般的に使用される2つの画像処理機能です。前者は画像に透明な色を割り当てるために使用され、後者は高品質で画像をスケーリングするために使用されます。これらの2つの機能を組み合わせることは、透明な背景(PNG形式など)を使用して画像の高品質のスケーリングを実行する必要がある場合に非常に効果的です。

1.MigmageColorallocatealpha ()ImageCopyResampled()の役割を理解する

  • ImageColorallocatealpha()関数は、画像の色を作成し、その透明度(アルファ)を​​設定するために使用されます。透明度範囲は0〜127、0は完全に不透明で、127は完全に透明です。

  • ImageCopyResampled()関数は、ソース画像からターゲット画像へのコピーに使用され、コピープロセス中に高品質の補間アルゴリズムを使用して、ピクセル化やぼやけを避けます。

これらの2つの関数は、透明性を備えた画像スケーリング操作を効果的に処理するために組み合わせて使用​​されます。

2。例:透明性を備えた高品質のスケーリング画像

以下は、ImageColorallocatealpha()ImageCopyResampled()を使用して、透明な画像の高品質のスケーリングを実行する方法を示す特定のPHPの例です。

 <?php
// オープンソース画像(透明であると仮定します PNG 画像)
$source = imagecreatefrompng('source_image.png');

// 获取源画像的宽度和高度
$src_width = imagesx($source);
$src_height = imagesy($source);

// 设定目标画像的宽度和高度
$new_width = 400;
$new_height = 300;

// 创建目标画像并保留透明度
$destination = imagecreatetruecolor($new_width, $new_height);

// 为目标画像分配透明背景
$transparent = imagecolorallocatealpha($destination, 0, 0, 0, 127); // 完全に透明
imagefill($destination, 0, 0, $transparent);

// 启用目标画像的透明处理
imagesavealpha($destination, true);

// 使用 imagecopyresampled 高品質のスケーリングを実行します
imagecopyresampled($destination, $source, 0, 0, 0, 0, $new_width, $new_height, $src_width, $src_height);

// 输出目标画像到浏览器
header('Content-Type: image/png');
imagepng($destination);

// メモリをきれいにします
imagedestroy($source);
imagedestroy($destination);
?>

3。コード解析

  • オープンソースの画像ImageCreateFrommpng()を使用して、透明性のあるPNG画像ファイルを開きます。

  • 画像サイズを取得ImagesX()Imagesy()を使用して、ソース画像の幅と高さを取得します。

  • ターゲット画像を作成します。ImageCreateTrueColor ()を使用して新しいTrue Colorイメージを作成し、ターゲット画像に透明な背景を割り当てます。

  • 透明な色を割り当てますImageColorallocatealpha()を介して完全に透明な色をターゲット画像に割り当て、 ImageFill()を介してターゲット画像の背景を入力します。

  • 透明な保存を有効にしますImagesAvealpha()を使用して、ターゲット画像の透過処理を有効にして、透明性情報が保持されるようにします。

  • 高品質のスケーリングImageCopyResampled()関数を介してソースイメージをターゲットサイズにスケーリングし、高い画質を維持します。

  • 出力画像ImagePng()を介して生成された画像をブラウザに出力します。

  • メモリをきれいにする:最後に、 Imagedestroy()を使用してメモリを解放します。

4。注意すべきこと

  • ImageColorallocatealpha()を使用して透明な色を画像に割り当てる場合、透過値は0〜127の範囲で、0は完全に不透明で、127は完全に透明です。

  • 透明性情報を維持するには、画像を出力する前に、必ずImageAvealpha()を有効にしてください。

  • ImageCopyResampled()は、画像スケーリング中にジャグジング現象を効果的に減らすことができ、ほとんどの画像スケーリングニーズに適した高い画質を維持できます。

5。概要

ImageColorallocatealpha()ImageCopyResampled()を組み合わせることにより、透明性を備えた高品質の画像のスケーリングを簡単に実現できます。この方法は、PNGなどの透明な背景を持つ画像に適しています。これにより、スケーリング時に透明性情報の喪失を回避し、スケーリング後の画質ができるだけ高いことを確認できます。


以下は、記事に関係のない部分です