1. ホーム
  2. Web プログラミング
  3. PHP プログラミング
  4. phpのヒント

php pngの歪みの原因と解決策

2022-01-14 23:27:44

1. PHPのサンプルファイルを作成します。

2. 背景画像と同じ大きさのトゥルーカラーキャンバスを作成する。

3. 背景画像をコピーします。

4、「imagecreatefrompng」でpng画像を合成する。

使用例

<?php
    ob_clean();
    $bg = "image1.png";
    $image_1 = imagecreatefrompng($bg);
    $bgx = imagesx($image_1);
    $bgy = imagesy($image_1);
    //create a true-color canvas the same size as the background image (ps: this is the only way to ensure that the image will not be distorted when copied later)
    $bgimage = imageCreatetruecolor($bgx,$bgy);
    imagesavealpha($bgimage, true);//keep transparent
    imagealphablending($bgimage, true);//blend mode
    $alpha = imagecolorallocatealpha($bgimage, 0, 0, 0, 127);/    imagefill($bgimage, 0, 0, $alpha);
    //copy the background image
    imagecopyresampled($bgimage,$image_1,0,0,0,0,$bgx,$bgy,$bgx,$bgy);
    $fontColor = imagecolorallocate($bgimage,0x33,0x33,0x33);
    $image_2 = imagecreatefrompng( "image2.png");
    //composite image 2
    imagecopyresampled($bgimage, $image_2, 100, 100, 0, 0, 40, 40, imagesx($image_2) , imagesy($image_2));
    /    $textLen = mb_strlen($text1);
    $fontSize = 20;
    $fontWidth = imagefontwidth($fontSize)*3;//I don't know why, but it's tested
    $textWidth = $fontWidth * mb_strlen($text1);
    $textx = ceil ( ($bgx - $textWidth) / 2 );
    imageTTFText($bgimage, $fontSize, 0, $textx, 450, $fontColor, $font , $text1);
    $result = imagepng($bgimage,"newimage.png");
    imagedestroy($bgimage);
    imagedestroy($qrcode);

その他の関連ソリューション

PHPは、マージ画像の歪み問題を解決します。

$ni = imagecreatetruecolor($toW,$toH); //create true color image
$bg_x = (($toW-$ftoW)/2);
$bg_y = (($toH-$ftoH)/2);
$color=imagecolorallocate($ni,255,255,255); //create color
imagefill($ni, 0, 0, $color); //set white background
imagecopy($ni,$tm,$bg_x,$bg_y,0,0,$ftoW,$ftoH); //merge images
imagedestroy($tm);

php pngの歪みの原因と解決策についての記事です。php png歪みについては、BinaryDevelopの過去記事を検索していただくか、引き続き以下の関連記事をご覧ください。