Я использую класс превосходной работы с изображениями Фила Брауна здесь 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: К сожалению, недопустимый ресурс, поэтому он отправляет неверную информацию классу.Любая помощь с благодарностью!
С уважением
Мэтт