@hypero

Как изменить размер миниатюр?

Здравствуйте.

У меня такой вопрос.

Имеется мобильное приложение, через которое сотрудники делают фото в магазине и фотографии отправляются к нам на сервер.
Через веб-панель их можно посмотреть в разделе Лента.
Фото показываются в миниатюрах, которые при желании можно открыть на полный экран.
Проблема в том, что если визитов много (а их как правило много) страница долго грузится, так как фотки в исходном размере.
Вопрос: как уменьшить качество фотографии в миниатюрах, но при клике открывать нормальное, исходное качество.
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега PHP
Web developer
Вариант 1: imagick или gd

Вариант 2: на лету nginx
Ответ написан
Комментировать
Exploding
@Exploding
wtf?
Вот было откуда-то... Писал не я если что, и не проверял, но вроде бы работало когда-то...
//параметры: файлСюда, файлТуда, ширина, высота, качество в %
//короче разберетесь сами, да и допилить/перепелить надо бы
//а лучше новую написать
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
	list($w_i, $h_i, $type) = getimagesize($file_input);
	if (!$w_i || !$h_i) {
		echo 'Невозможно получить размер';
		return;
    }
    $types = array('gif','jpg','jpeg','png');
    
    if (in_array($type,$types)) {
    	$func = 'imagecreatefrom'.$type;
    	$img = $func($file_input);
    } else {
    	echo 'Некорректный формат файла';
		return;
    }
	if ($percent) {
		$w_o *= $w_i / 100;
		$h_o *= $h_i / 100;
	}
	if (!$h_o) $h_o = $w_o/($w_i/$h_i);
	if (!$w_o) $w_o = $h_o/($h_i/$w_i);
	$img_o = imagecreatetruecolor($w_o, $h_o);
	imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
	if ($type == 2) {
		return imagejpeg($img_o,$file_output, $percent); 
	} else {
		$func = 'image'.$type;
		return $func($img_o,$file_output);
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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