@Creed1234

Почему файл PNG не проходит imagecreatefrompng?

Я загружаю изображение. Делаю это в Yii2. В модели загрузки использую правила:
'extensions' => ['jpg', 'jpeg', 'png'],
                'checkExtensionByMimeType' => true,

Сама функция загрузки
public function upload($var)
    {

        if ($this->validate()) {
            $dir = 'uploads/' . $var . '/';
            $name = $this->randomFileName($this->img->extension);
            $path = $dir . $name;
            $this->img->saveAs($path);

            //reSizeImg
            $imgProperty = getimagesize($path);
            $imgWight = $imgProperty[0];
            $imgHeight = $imgProperty[1];

            $standardWight = 500;
            //пропорции
            $ratio = $imgWight / $standardWight;
            $wightNewImg = round($imgWight / $ratio);
            $heightNewImg = round($imgHeight / $ratio);

            //cоздаем новое изображение заданных параметров
            $newImg = imagecreatetruecolor($wightNewImg, $heightNewImg);

            if($this->img->extension === 'jpg'|| $this->img->extension === 'jpeg') {

                $uploadImg = imagecreatefromjpeg($path);
            } else {
                $uploadImg = imagecreatefrompng($path);
            }
            imagecopyresampled($newImg, $uploadImg, 0, 0, 0 ,0, $wightNewImg, $heightNewImg, $imgWight, $imgHeight);
            imagejpeg($newImg, $path);

            //уничтожаем данные
            imagedestroy($newImg);
            imagedestroy($uploadImg);
            return $name;
        } else {
            return false;
        }
    }

    private function randomFileName($extension = false)
    {
        $extension = $extension ? '.' . $extension : '';
        do {
            $name = md5(microtime() . rand(0, 1000));
            $file = $name . $extension;
        } while (file_exists($file));
        return $file;
    }

После сохранения все хорошо. НО если я пытаюсь повторно прикрепить изображение, которое уже было сохранено такой функцией, именно формата PNG ( с jpg все работает) вначале, вообще не проходит валидатор модели. А если я комментирую
'extensions' => ['jpg', 'jpeg', 'png'],, то выскакивает ошибка

imagecreatefrompng ХХХХХХХХХХХХХХХХХХХХХ.png' is not a valid PNG file.

Почему так происходит ?
  • Вопрос задан
  • 334 просмотра
Решения вопроса 1
Adamos
@Adamos
imagejpeg($newImg, $path);
imagecreatefrompng ХХХХХХХХХХХХХХХХХХХХХ.png' is not a valid PNG file.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы