Как автоматически подгонять размер фотографии?

Сразу скажу - если кому то будет полезен скрипт, могу выложить куда ни будь на гитхаб (пишите)
В общем, сначала объясню что у меня есть:

Есть форма отправки файлов:
<form role="form" action="generate.php" method="POST" enctype="multipart/form-data">
			    <div class="form-group">
			    	<label for="img1" class="sr-only">Выберите изображение "ДО"</label>
					<div class="file_upload btn btn-default">Выбрать фото "ДО"<input type="file" name="img1"></div>
				</div>
			    <div class="form-group">
			    	<label for="img2" class="sr-only">Выберите изображение "ПОСЛЕ"</label>
					<div class="file_upload btn btn-default">Выбрать фото "ПОСЛЕ"<input type="file" name="img2"></div>
				</div>
					<button type="submit" name="generate" class="btn btn-primary btn-lg btn-max" style="width: 100%;">Получить результат</button>
			</form>


Есть файл обработчик "generate.php" который сохраняет файлы в корень.
<?php
$data = $_POST;
if (isset($data['generate'])) {
        if($_FILES['img1']['error'] == 0) { // Нет ошибок
            $name = $_FILES['img1']['name'];
            $name1 = 'do.jpg';
            move_uploaded_file($_FILES['img1']['tmp_name'],$name1);
        }
        if($_FILES['img2']['error'] == 0) { // Нет ошибок
            $name = $_FILES['img2']['name'];
            $name2 = 'posle.jpg';
            move_uploaded_file($_FILES['img2']['tmp_name'],$name2);
        }
}
?>


Так же в корне сразу лежит логотип в формате *.png
Создаю изображение следующим образом:
<?php 
$do = imagecreatefromjpeg('do.jpg');
$im  = imagecreatetruecolor(1632, 2448);
imagecopyresized($im, $do, 0, 1224, 0, 0, 1632, 1224, 3264, 2448);

$posle = imagecreatefromjpeg('posle.jpg');
imagecopyresized($im, $posle, 0, 0, 0, 0, 1632, 1224, 3264, 2448);

header('Content-Type: image/png');
$im = imagerotate($im, -90, 0);
$logo = imagecreatefrompng('logo.png');
list($width, $height, $type, $attr) = getimagesize('logo.png');
imagecopyresized($im, $logo, 930, 900, 0, 0, 600, 600, $width, $height);
imagepng($im);
imagedestroy($im);
?>


В результате получая что то типа "до - после" с логотипом по середине.
И вывожу соответственно просто через <img src="путь к скрипту">
Проблема заключается в том, что когда я писал код (да и как и сейчас в общем то), я не особо разбирался как работает все это, собирал что называется "На коленках" из того что находил в интернете и теперь при работе с телефона (iPhone 6) - все работает хорошо (т.к. значения ширины и высоты фото указавал изначально от него), но если попробовать загрузить файлы например с iPhone 5 или iPhone SE - то скрипт уже не создает изображения.

Я так понимаю что мне надо каким то "магическим" способом узнавать ширину и высоту исходного изображения и изменять его под нужные мне. В общем вопрос - как сделать что бы не зависимо от того с телефона (и какого именно), с компа или чего то еще я бы не загружал фотографии, скрипт нормально работал и выдавал результаты?

P.S. > возможно решения при помощи Canvas например, единственное условие - что бы фотографии можно было выбирать самостоятельно с мобильного телефона.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
Я так понимаю что мне надо каким то "магическим" способом узнавать ширину и высоту исходного изображения

У вас в коде есть эта "магия", посмотрите внимательней.
Если хотите когда-нибудь стать программистом, надо научиться не бездумно копировать чужой код, а разбираться в его работе. Хотя бы в скрипте из 12 простых строчек.
Ответ написан
Ваш ответ на вопрос

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

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