Динамическое изменение размера манипуляции изображениями - PullRequest
0 голосов
/ 09 февраля 2019

Я использую класс превосходной работы с изображениями Фила Брауна здесь https://gist.github.com/philBrown/880506 с моим кодом ниже:

if ($fileValidation->passed()) { 
//Upload the file 
$newNamePrefix = time() . '_'; 
//add a time prefic to the front of the file 
$manipulator = new ImageManipulator($_FILES['fileToUpload']['tmp_name']); //initialise the class 
$newImage = $manipulator->resample(300,300); // resizing to 300x300 
//Check there is space in their uploads dir after upload 
if (checkSpace($accountId, $_FILES['fileToUpload']['size'] == true)) { 
//Save the file 
$manipulator->save($_SERVER['DOCUMENT_ROOT'].'/uploads/'.$accountId.'/'.$newNamePrefix
. $_FILES['fileToUpload']['name']); // saving file to uploads folder 
//Insert a record into the uploads table 
$insertProfile = DB::getInstance()->insert('ym_uploads', array(
'account_id' => $accountId, 
'vessel_id' => $vid, 
'user_id' => $uid, 
'file_linked_table' => 'ym_expenditure',
'file_linked_id' => $item,
'file_name' => $newNamePrefix . $_FILES['fileToUpload']['name']
)); 
} else { Session::flashmessage('danger', 'We were unable to upload your receipt image as you have insuficient storage remaining'); } }

Что я не знаю, как подойти, так это как динамически изменить размер изображения.Например, пользователь загружает картинку со своего телефона.Установив размер 300 x 300, я получаю сжатое изображение, если загруженное изображение не является квадратным для начала.

Может кто-нибудь указать мне правильное направление к тому, как подойти к этому?По сути, я пытаюсь уменьшить размер файла, загружаемого при загрузке.

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

Я сейчас работаю над ...

list($width, $height, $type, $attr) = getimagesize($manipulator);
if ($width >= 4000) {
$width = $width / 8;
$height = $height / 8;
} elseif ($width >= 2000) {
$width = $width / 4;
$height = $height / 4;
} elseif ($width >= 500) {
$width = $width / 2;
$height = $height / 2;
}
$newImage = $manipulator->resample($width, $height); // resizing to 300x300

Выдает Uncaught UnexpectedValueException: К сожалению, недопустимый ресурс, поэтому он отправляет неверную информацию классу.Любая помощь с благодарностью!

С уважением

Мэтт

1 Ответ

0 голосов
/ 09 февраля 2019

У меня что-то работает, хотя, возможно, это не лучший способ выполнить этот процесс.

Использование ...

$manipulator = new ImageManipulator($_FILES['fileToUpload']['tmp_name']); //initialise the class
list($width, $height, $type, $attr) = getimagesize($_FILES['fileToUpload']['tmp_name']);
if ($width >= 4000) {
$width = $width / 8;
$height = $height / 8;
} elseif ($width >= 2000) {
$width = $width / 4;
$height = $height / 4;
} elseif ($width >= 500) {
$width = $width / 2;
$height = $height / 2;
}
$newImage = $manipulator->resample($width, $height); // resizing to 300x300

Позволяет мне динамически уменьшать размер файла на основе загруженного изображения и передавать его в класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...