В основном файл должен быть помещен в ваш скрипт PHP. Вы можете сделать это с помощью HTML-форм (input type='file'
) или jQuery background uploaders . Загрузки по умолчанию хранятся во временном каталоге вашего веб-сервера, текущий каталог можно найти, посмотрев вывод phpinfo()
.
Далее проверьте $ _ FILES , в частности, глобальный move_uploaded_file () , вы можете найти тип изображения с помощью ключа type
в массиве $ _FILES, хотя этим можно манипулировать на стороне клиента может быть лучше проверить тип файла вручную , используя магические байтовые функции .
Как только вы загрузите файл, вам нужно будет им манипулировать. Вы можете использовать GD или ImageMagick , ImageMagick может быть не встроен в вашу версию PHP, GD довольно распространен. Я больше знаком с GD, поэтому я предлагаю вам проверить функции imagecreatefromjpeg () / png / gif & imagecopyresampled () , которые могут как обрезать, так и повторно делать выборку. Чтобы узнать, нужно ли вам обрезать / изменить размер, вы можете проверить соотношение сторон. Вот функция, которую я взбил:
function fixRatio($x, $y, $ratio) {
$ratio = round($ratio,6);
$iRatio = round($x / $y, 6);
if ($iRatio > $ratio) {
$x = ceil($y * $ratio);
} else if ($iRatio < $ratio) {
$y = ceil($x * (1 / $ratio));
}
return array('x' => $x, 'y' => $y);
}
Вы вводите ширину, высоту и желаемое соотношение сторон, и это выдаст массив, который содержит исправленные размеры. Вероятно, лучше указать соотношение, разделив желаемую высоту на желаемую ширину, например, fixRatio($x, $y, 640/480)
. Затем вы можете использовать эту информацию для обрезки изображения w / imagecopyresampled()
, в то же время вы можете указать функции ширину и высоту назначения. Так что если все должно быть 640x480, то вы должны указать это при вызове imagecopyresampled()
. Затем вы можете использовать iamgejpeg () / gif / png для вывода изображения в виде файла в общедоступный каталог на вашем сервере. Так как он общедоступный, вы можете ссылаться на него через URL, будь то HTML-форма с просьбой подтвердить, нравится ли им то, что он видит, или в элементе canvas .