не отображается png на сайте

150
19 декабря 2019, 15:50

не понимаю почему не отображается после загрузки изображение в формате png с прозрачным фоном. с изображениями jpg все отлично! после нажатия на кнопку изображение проходит через следующий код:

function ValidOneImage ($file_array = array(), $folder) {
        //$error = array();
        $blacklist = array(".php", ".phtml", ".php3", ".php4", ".html", ".htm", ".txt", ".zip", ".rar");
        foreach ($blacklist as $item) {
            if(preg_match("/$item\$/i", $file_array['name'])) return 'Error image format';
        }
        $type = $file_array['type'];
        $size = $file_array['size'];
        if (($type != "image/jpg") && ($type != "image/jpeg") && ($type != "image/png")) return 'Error image type';
        if ($size > 20480000) return 'Error image size';
        if (!file_exists("images/".$folder."/")) mkdir("images/".$folder."/");
        $images = "images/".$folder."/".$file_array['name'];
        if(move_uploaded_file($file_array['tmp_name'], $images)){
            $this->resize_photo("images/".$folder."/", $file_array['name'], $file_array['size'], $file_array['type'], $file_array['tmp_name']);
        }
        return $images;
    }
function resize_photo($path,$filename,$filesize,$type,$tmp_name){
        // Проверяем, существует ли файл: если существует - ресайзим его
        if(file_exists($path.$filename))
        {                
            $height = 480; //параметр высоты превью
            $width = 640; //параметр ширины превью
            $rgb = 0xffffff; //цвет заливки несоответствия 0xFFFFFF - белый
            $size = getimagesize($path.$filename);//узнаем размеры картинки (дает нам масcив size)
            //определяем тип файла
            $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
            $icfunc = "imagecreatefrom" . $format;   //определение функции соответственно типу файла
            //если нет такой функции прекращаем работу скрипта
            if (!function_exists($icfunc)) return false; 
            $x_ratio = $width / $size[0]; //пропорция ширины будущего превью
            $y_ratio = $height / $size[1]; //пропорция высоты будущего превью
            $ratio       = min($x_ratio, $y_ratio);
            $use_x_ratio = ($x_ratio == $ratio); //соотношения ширины к высоте
            $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio); //ширина превью 
            $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio); //высота превью
            //расхождение с заданными параметрами по ширине
            $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
            //расхождение с заданными параметрами по высоте
            $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
            //создаем вспомогательное изображение пропорциональное превью
            $img = imagecreatetruecolor($width,$height);
            imagefill($img, 0, 0, $rgb); //заливаем его…
            $photo = $icfunc($path.$filename); //достаем наш исходник
            imagecopyresampled($img, $photo, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]); //копируем на него нашу превью с учетом расхождений       
            //$func = 'image'.$format;
            switch($type) {
                case 'gif':
                    imagegif($img, $path.$filename); // параметр качества не предусмотрен
                    break;
                case 'jpg':
                    imagejpeg($img, $path.$filename, 45); // диапазон значений параметра $quality = 0...100, 100 = максимальное качество картинки
                    break;
                case 'png':
                    imagepng($image, $filename, 5);
            }
            //$func($img, $path.$filename, $quality, PNG_NO_FILTER); //сохраняем результат (превью картинки)
            // Очищаем память после выполнения скрипта
            imagedestroy($img);
            imagedestroy($photo);
        }
    }

при этом ошибок нет никаких! после загрузки файл на сервере есть! и ссылка в html код выводится верная, а изображение нет, не понимаю почему

Answer 1

Попробуйте перейти по ссылке на изображение и посмотреть отобразится ли оно в браузере, если нет, то вероятно сервер не отдает png

READ ALSO
Как в wp связать посты для выбора в админке

Как в wp связать посты для выбора в админке

На сайте есть пост (скажем с фильмом и информацией) и кастомный пост (с актерами)

134
Соединить клиент с сервером

Соединить клиент с сервером

Никогда не занимался такими вещами, но мне нужно написать клиент и соединить его с сервером (то есть чтобы входные данные из клиента передавались...

139
Как получить последние сообщения из mysql?

Как получить последние сообщения из mysql?

Есть таблица themesС этой таблицы нужно получить последние сообщения по section_id

168