Мне нужна общая загрузка изображений для сайта PHP. Фотографии и логотипы должны быть изменены до определенной степени, чтобы удостовериться, что они не слишком большие и соответствуют дизайну.PHP-GD: сохранить полупрозрачные области
Я пытаюсь его с этим кодом:
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
if($this->image_type == PNG or $this->image_type == GIF) {
imagealphablending($new_image, false);
imagesavealpha($new_image,true);
$transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
imagefilledrectangle($new_image, 0, 0, $nWidth, $nHeight, $transparent);
}
imagecopyresized($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
Однако, когда я загрузить изображение, которое имеет участки с альфа-значениями от 0 до 255, они заменяются на полный черный, поворачиваясь анти- сглаженные области на черную границу.
Полная прозрачность работает отлично для PNG и GIF, только полупрозрачные области являются проблемой.
Прошу прощения, если я не использую правильные термины, чтобы объяснить свою проблему, возможно, поэтому я почти ничего не нашел на ней.
См. Http://stackoverflow.com/questions/8443699/how-to-draw-semi-transparent-rectangle-in-php –
не может воспроизвести, проблема, вероятно, в другом месте, например, если изображение PNG, Используется 'imagecreatefrompng'? вы можете заменить 'imagefilledrectangle' на' imagefill' и 'imagecopyresized' на' imagecopyresampled', также хорошо, если вы добавите 'imagealphablending ($ this-> image, true);' ... –