Я загружаю изображение с MIME типа PNG, и все хорошо, файл имеет прозрачный фон
но начать мне нужно изменить размер для этого файла, как это
/home/ivan/host/olegroom/app/../web/uploads/photo/20161216022845_png-001.png
/**
* @param string $width
*/
public function resizeToWidth($width)
{
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width, $height);
}
/**
* @param string $width
* @param string $height
* @param int $left
* @param int $top
*/
public function resize($width, $height, $left = 0, $top = 0)
{
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, $left, $top, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
а потом я сохраняю свой файл
/**
* @param string $filename
* @param int $image_type
* @param int $compression
* @param null $permissions
*/
public function save($filename, $image_type = IMAGETYPE_JPEG, $compression = 95, $permissions = null)
{
if ($image_type == IMAGETYPE_JPEG) {
imagejpeg($this->image, $filename, $compression);
} elseif ($image_type == IMAGETYPE_GIF) {
imagegif($this->image, $filename);
} elseif ($image_type == IMAGETYPE_PNG) {
imagepng($this->image, $filename);
}
if ($permissions != null) {
chmod($filename, $permissions);
}
}
и после изменения размера у меня есть черный фон, но мне это не нужно, как изменить размер для png mimetype ??
Вы должны отключить альфа-смешивание и сохранить исходные данные альфа-канала. Сделайте это после imagecopyresampled()
вызов:
imagealphablending($new_image, false);
imagesavealpha($new_image, true);
Других решений пока нет …