Вы не совсем понимаете, с какими проблемами вы сталкиваетесь.Предоставление более подробной информации о проблеме поможет.
Как говорится, является ли проблема вашим заголовком Content-Type?В вашем фрагменте кода вы передаете Content-Type: <span class="posthilit">image</span>/png
, когда оно должно быть Content-Type: image/png
.
Кроме того, похоже, что вы уничтожаете изображение, прежде чем отправить его клиенту - попробуйте переместить imagedestory($im)
после того, как вызвоните imagepng($im, null, 300)
.
Не забудьте проверить ваши возвращаемые значения тоже!imagecopyresampled
может вернуть true
при успехе и false
при ошибке, что может помочь вам сузить часть, которая выходит из строя.
РЕДАКТИРОВАТЬ : Как сказал Корвин Санто, вы такжехотите установить imagealphablending в true.
Ответ на обновление
В вашем новом коде замечено несколько вещей:
- Вы создаете переменную
$im
из imagecreatefromstring
, но позже вы используете $img
при вызове imagecopyresampled
. - При вызове
imagecopyresampled
вы используете переменную $w
, когда она должна быть $x
. - Пожалуйста, пожалуйста, , пожалуйста начните проверять возвращаемые значения вместо того, чтобы слепо признать, что они работают.Возможно, вам удалось обнаружить проблему на
imagecopyresampled
, если вы проверяли их в первую очередь. - Вам нужно вывести свой заголовок до того, как вы выведете само изображение - иначе выВы получите ошибку «заголовки уже отправлены».
- Вам нужно переместить
imagedestroy
до возврата.Как только ваша функция вернется, ничего после нее не выполнится, поэтому ваше изображение никогда не будет уничтожено.Кроме того, вам также нужно будет уничтожить исходный PNG - так что добавьте imagedestroy($im)
перед вашим оператором возврата.