anton_reut
@anton_reut
Начинающий веб-разработчик

Отказ от move_uploaded_file() в пользу собственной функции, правильно ли?

Внедрил в свой код функцию изменения размеров картинки и в конце эта функция сохраняет получившуюся картинку в папку images:
imagejpeg($thumb, '../images/small_' . $file_name, 95);

Так вот думаю - а зачем мне теперь функция move_uploaded_file() если тоже самое делает функция ресайза? По сути функцию move_uploaded_file() можно убрать из кода, если мне не нужна загруженная картинка в исходных размерах.

Что думаете?

P.S. Если что вот сама функция ресайза:

function imageResize($file_path, $new_width, $file_name){
	
	//Получаем ширину и высоту исходника
	list($w, $h) = getimagesize($file_path);
	
	//Получаем коэффицент соотношения сторон
	$proportions = $h / $w;
	
	$new_w = $new_width;
	$new_h = $new_w * $proportions; // Получаем высоту уменьшенной картинки пропорционально новой ширине
	
	$thumb = imagecreatetruecolor($new_w, $new_h);
	$source = imagecreatefromjpeg($file_path);
	
	imagecopyresized($thumb, $source, 0, 0, 0, 0, $new_w, $new_h, $w, $h);
	
	imagejpeg($thumb, '../images/small_' . $file_name, 95);
	imagedestroy($thumb);
	
}
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
xEpozZ
@xEpozZ
Веб-разработчик
Ресайзите сразу tmp файл, а потом загружайте его себе.

class ImageResizer {
    private $fileUploader;
    
    public function resize(string $currentPath, int $width, int $height, string $newPath){
        $resizedImagePath = ...;
        $this->fileUploader->move($resizedImagePath, $newPath);
    }
}

class FileUploader {
    public function move(string $from, string $to){
        ...
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Баянист. Тамада. Услуги.
С точки зрения архитектуры, вы поступаете неверно - ресайзилка должна только ресайзить.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
HTML Academy Санкт-Петербург
от 110 000 до 130 000 руб.
от 55 000 до 80 000 руб.
WACDAQ Москва
от 120 000 руб.
24 авг. 2019, в 11:59
5000 руб./за проект
24 авг. 2019, в 11:31
30000 руб./за проект
24 авг. 2019, в 10:59
750 руб./за проект