imagecrop() alternative for PHP < 5.5

2019-02-17 03:30发布

问题:

A simple question motivated by a curiosity, with probably a complex answer: Is it possible to emulate the new PHP 5.5 imagecrop() in earlier versions, like 5.4, by combining other GD functions?

Awn.. But without the imagecrop() black line bug, please. :p

回答1:

This should be a drop-in replacement for imagecrop() (without the bug...):

function mycrop($src, array $rect)
{
    $dest = imagecreatetruecolor($rect['width'], $rect['height']);
    imagecopy(
        $dest,
        $src,
        0,
        0,
        $rect['x'],
        $rect['y'],
        $rect['width'],
        $rect['height']
    );

    return $dest;
}

Usage:

$img = mycrop($img, ['x' => 10, 'y' => 10, 'width' => 100, 'height' => 100]);

Note that the bug is apparently fixed in PHP 5.6.12.