2010-11-11 2 views
8

Я пробовал буквально весь день вчера, пытаясь понять это. Я поворачиваю изображение с помощью imagerotate(). Я получаю черный фон, где изображение больше не покрывает. Я попробовал все, что я могу думать, чтобы сделать этот фон прозрачным ..Почему я не могу сделать фон png прозрачным после поворота его с помощью php?

вот мой текущий код ..

function rotate($degrees) { 
     $image = $this->image; 
     imagealphablending($image, false); 
     $color = imagecolorallocatealpha($image, 0, 0, 0, 127); 
     $rotate = imagerotate($image, $degrees, $color); 
     imagecolortransparent($rotate, $color); 
     imagesavealpha($image, true); 
     $this->image = $rotate; 
    } 

Я действительно начинаю получать галочку. Может ли кто-нибудь показать мне какой-то рабочий код? пожалуйста?

Может быть, что-то не так с моим сервером WAMP и Dreamweaver? потому что я даже пробовал это .. http://www.exorithm.com/algorithm/view/rotate_image_alpha и он по-прежнему выставляет либо черный, либо белый фон.

+2

Похож дубликатом вчерашнего вопроса. http://stackoverflow.com/questions/4148774/how-do-i-get-a-transparent-background-after-rotaing-a-png-image-with-php/4148805 – stevelove

+0

и да, это так. Я знаю, что я действительно не должен был размещать снова, но вы понятия не имеете, как сильно я хочу, чтобы этот код просто работал уже. – Chris

+0

Пожалуйста, укажите свою версию PHP. – Rolf

ответ

1

Попробуйте установить изображение в формате youraveavepha() на повернутом изображении.

В настоящее время у вас работает imagesavealpha() на исходном изображении. [например. imagesavealpha ($ image, true); ]

Вместо этого вы хотите запустить imagesavealpha() на повернутом изображении, а затем установите $ this-> изображение ... попробовать:

... 
    $rotate = imagerotate($image, $degrees, $color); 
    imagecolortransparent($rotate, $color); 
    imagesavealpha($rotate, true); // <- using $rotate instead of $image 
    $this->image = $rotate; 

}

Смежные вопросы