PHP: получить реальный размер изображения из PNG с прозрачным BG - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть изображения с прозрачной BG, и мне нужно получить изображение реального размера в прозрачной BG ...

(Изображение может быть 500x500, но изображение в изображении может быть 440x250, и мне нужно получить этот размер - 440x250).... Как это сделать в PHP и GD?

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

таким образом, реальный размер изображения - последний непрозрачный пиксель на стороне x - первый непрозрачный на стороне x и такой же на стороне y.так что все, что вам нужно, это найти их:)

тогда прозрачно alpha равно 127: A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent. - http://php.net/manual/de/function.imagecolorallocatealpha.php - так что вы здесь

<?php
$image = 'test.png';
$image = imagecreatefrompng($image);

$width = imagesx($image);
$height = imagesy($image);

$colors = array();

$x_max = $y_max = 0;
$x_min = $width;
$y_min = $height;
for ($y = 0; $y < $height; ++$y)
{
    for ($x = 0; $x < $width; ++$x)
    {
        $rgb = imagecolorat($image, $x, $y);
        $color = imagecolorsforindex($image, $rgb);

        if (127 !== $color['alpha']) {
            $x_min = min($x_min, $x);
            $x_max = max($x_max, $x);
            $y_min = min($y_min, $y);
            $y_max = max($y_max, $y);
        }
    } 
}

echo 'width: ' . ($x_max - $x_min) . PHP_EOL;
echo 'height: ' . ($y_max - $y_min) . PHP_EOL;

вывод:

width: 180
height: 180
...