2016-12-16 5 views
1

Я загрузить изображение с типом мим PNG, и все нормально, файл имеет прозрачный фонИзменение размера .PNG изображений с помощью PHP

но начать мне нужно изменить размер для этого файла, как этот

/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); 
    } 
} 

и после изменения размера у меня есть черный backgrounf, но я не нуждаюсь в этом, как изменить размер для MimeType ?? детские

+1

Не уверен, что библиотека используется, но проверить это: http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with- прозрачность в-php или это: http://stackoverflow.com/questions/13596794/resize-images-with-php-support-png-jpg – JustBaron

ответ

0

Вы должны отключить альфа-смешение и сохранить исходные данные альфа-канала. Делайте это после imagecopyresampled() вызова:

imagealphablending($new_image, false); 
imagesavealpha($new_image, true); 
Смежные вопросы