Contao\GdImage::isSemitransparent PHP Method

isSemitransparent() public method

Detect if the image contains semitransparent pixels
public isSemitransparent ( ) : boolean
return boolean True if the image contains semitransparent pixels
    public function isSemitransparent()
    {
        if (!imageistruecolor($this->gdResource)) {
            return false;
        }
        $width = imagesx($this->gdResource);
        $height = imagesy($this->gdResource);
        for ($x = 0; $x < $width; $x++) {
            for ($y = 0; $y < $height; $y++) {
                // Check if the pixel is semitransparent
                $alpha = imagecolorat($this->gdResource, $x, $y) >> 24 & 0x7f;
                if ($alpha > 0 && $alpha < 127) {
                    return true;
                }
            }
        }
        return false;
    }

Usage Example

Example #1
0
 /**
  * Tests the isSemitransparent() method.
  */
 public function testIsSemitransparent()
 {
     $image = imagecreatetruecolor(100, 100);
     imagealphablending($image, false);
     $image = new GdImage($image);
     imagefill($image->getResource(), 0, 0, imagecolorallocatealpha($image->getResource(), 0, 0, 0, 0));
     $this->assertFalse($image->isSemitransparent());
     imagefill($image->getResource(), 0, 0, imagecolorallocatealpha($image->getResource(), 0, 0, 0, 127));
     $this->assertFalse($image->isSemitransparent());
     imagefill($image->getResource(), 0, 0, imagecolorallocatealpha($image->getResource(), 0, 0, 0, 126));
     $this->assertTrue($image->isSemitransparent());
     imagefill($image->getResource(), 0, 0, imagecolorallocatealpha($image->getResource(), 0, 0, 0, 1));
     $this->assertTrue($image->isSemitransparent());
     imagefill($image->getResource(), 0, 0, imagecolorallocatealpha($image->getResource(), 0, 0, 0, 0));
     $this->assertFalse($image->isSemitransparent());
 }