PHP: Convertendo png e gif em escala de cinza

estou usando o seguinte script para converter jpgs em imagens em escala de cinza.http://bubble.ro/How_to_convert_an_image_to_grayscale_using_PHP.html

Quero atualizá-lo para converter também pngs (com transparência) e gifs (com transparência) em imagens em escala de cinza.

No momento não está funcionando. Estou consultando a imagem-src para sua extensão de arquivo. Se jpg, if, gif ou png, eu chamo a imagem apropriada, a partir de jpg-gif-png

No entanto, eu estou sempre executando o mesmo loop for-gif e, infelizmente, só recebem retângulos cinza, cada pixel é cinza. O png quase funciona, mas a transparência em pngs é transformada em preto.

Alguma ideia?

questionAnswers(4)

yourAnswerToTheQuestion