Отразить изображение по горизонтали - PullRequest
1 голос
/ 16 сентября 2008

Мне нужно перевернуть изображение, чтобы персонаж смотрел в правильном направлении. Это нужно делать «на лету», как говорится.

Проблема, с которой я сталкиваюсь, заключается в том, что с изображениями Gif я теряю прозрачность. (Фон становится белым)

Ниже приведен код: (В качестве альтернативы кто-то может отправить мне хороший пример)

$img = imagecreatefromgif("./unit.gif");

$size_x = imagesx($img);
$size_y = imagesy($img);

$temp = imagecreatetruecolor($size_x, $size_y);

imagecolortransparent($img, imagecolorallocate($img, 0, 0, 0));
imagealphablending($img, false);
imagesavealpha($img, true);

$x = imagecopyresampled($temp, $img, 0, 0, ($size_x-1), 0, $size_x, $size_y, 0-$size_x, $size_y);

if ($x) {
    $img = $temp;
}
else {
    die("Unable to flip image");
}

header("Content-type: image/gif");
imagegif($img);
imagedestroy($img);

Ответы [ 3 ]

2 голосов
/ 16 сентября 2008

Не должно ли это:

imagecolortransparent($img, imagecolorallocate($img, 0, 0, 0));
imagealphablending($img, false);
imagesavealpha($img, true);

... будь таким:

imagecolortransparent($temp, imagecolorallocate($img, 0, 0, 0));
imagealphablending($temp, false);
imagesavealpha($temp, true);

Обратите внимание, что вы должны вызывать эти функции для созданного вами изображения $ temp, а не исходного изображения.

2 голосов
/ 16 сентября 2008

Окончательные результаты:

$size_x = imagesx($img);
$size_y = imagesy($img);

$temp = imagecreatetruecolor($size_x, $size_y);

imagecolortransparent($temp, imagecolorallocate($temp, 0, 0, 0));
imagealphablending($temp, false);
imagesavealpha($temp, true);
$x = imagecopyresampled($temp, $img, 0, 0, ($size_x-1), 0, $size_x, $size_y, 0-$size_x, $size_y);
if ($x) {
    $img = $temp;
}
else {
    die("Unable to flip image");
}

header("Content-type: image/gif");
imagegif($img);
imagedestroy($img);
1 голос
/ 16 сентября 2008

Если вы можете гарантировать наличие ImageMagick, вы можете использовать их команду mogrify -flop. Сохраняет прозрачность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...