Olası GD ve PHP kullanarak saydam bir görüntü için arka plan rengi eklemek için

3 Cevap php

Ben GD kullanarak php dili ile yazılmış küçük resim oluşturma sınıfı var. Ben o küçük resimde arka plan koymak mümkün olabilir, ben png veya gif şeffaf resim upload olduğunu bilmek istiyorum? Bu mümkün değilse, lütfen bana nasıl yol lütfen. Teşekkürler.

3 Cevap

İşte PNG dosyaları için bir çalışma çözüm:

$filePath = '';  //full path to your png, including filename and extension
$savePath = '';  //full path to saved png, including filename and extension
$colorRgb = array('red' => 255, 'green' => 0, 'blue' => 0);  //background color

$img = @imagecreatefrompng($filePath);
$width  = imagesx($img);
$height = imagesy($img);

//create new image and fill with background color
$backgroundImg = @imagecreatetruecolor($width, $height);
$color = imagecolorallocate($backgroundImg, $colorRgb['red'], $colorRgb['green'], $colorRgb['blue']);
imagefill($backgroundImg, 0, 0, $color);

//copy original image to background
imagecopy($backgroundImg, $img, 0, 0, 0, 0, $width, $height);

//save as png
imagepng($backgroundImg, $savePath, 0);

Neden olmasın:

  1. İstediğiniz arka plan ile bir görüntü oluşturmak
  2. Yukarıda şeffaf görüntü boyamak
  3. Şeffaf birinin üzerine yeni resim kaydedin.

Çok basit Kodu. Dinamik arka plan rengi ile.

<?php
        function hex2RGB($hexStr, $retur`enter code here`nAsString = false, $seperator = ',') {
            $hexStr = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // Gets a proper hex string
            $rgbArray = array();
            if (strlen($hexStr) == 6) { //If a proper hex code, convert using bitwise operation. No overhead... faster`enter code here`
                $colorVal = hexdec($hexStr);
                $rgbArray['red'] = 0xFF & ($colorVal >> 0x10);`enter code here`
                $rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
                $rgbArray['blue'] = 0xFF & $colorVal;
            } elseif (strlen($hexStr) == 3) { //if shorthand notation, need some string manipulations
                $rgbArray['red'] = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
                $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
                $rgbArray['blue'] = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
            } else {
                return false; //Invalid hex color code
            }
            return $returnAsString ? implode($seperator, $rgbArray) : $rgbArray;die;
        }
        $color_code = hex2RGB('#fff000');

        $imgName = uniqid();
        $filePath = 'old-img/clothing_type_test.png';  //full path to your png, including filename and extension
        $savePath = 'new-img/'.$imgName.'.png';  //full path to saved png, including filename and extension
        $colorRgb = array('red' => $color_code['red'], 'green' => $color_code['green'], 'blue' => $color_code['blue']);  //background color

        $img = @imagecreatefrompng($filePath);
        $width  = imagesx($img);
        $height = imagesy($img);

        $backgroundImg = @imagecreatetruecolor($width, $height);
        $color = imagecolorallocate($backgroundImg, $colorRgb['red'], $colorRgb['green'], $colorRgb['blue']);
        imagefill($backgroundImg, 0, 0, $color);
        imagecopy($backgroundImg, $img, 0, 0, 0, 0, $width, $height);
        imagepng($backgroundImg, $savePath, 0);
        ?>
        <p align="center"><img align="absmiddle" src="<?php echo $savePath;?>" /></p>