Корректное уменьшение изображений до нужных размеров, без квадрат'тирования
Столкнулся сейчас с одной проблемкой при добавлении изображений, а точнее их корректном уменьшении до нужных размеров.
Изучил: пост о Работе с изображениями где показан основной функционал.
Задача: нужно сделать так что бы заливаемое изображение было корректно уменьшено среди 2 величин, то есть если я ставлю значения 64x64 то изображение если у него разрешение 400x600 то оно бы стало 62x64 а сейчас при использовании кода
Так же выдаёт ошибку если меняешь 3000,3000 на 64,64 я так понимаю, эти 2 переменные отвечают за максимальное разрешение изображения.
Пробовал сделать и так 64,64,null,null и снова выдаёт ошибка, а если делаешь 3000,3000,64,64 то из изображения получается квадратная аватарка с растягиванием..:(
Изучил: пост о Работе с изображениями где показан основной функционал.
Задача: нужно сделать так что бы заливаемое изображение было корректно уменьшено среди 2 величин, то есть если я ставлю значения 64x64 то изображение если у него разрешение 400x600 то оно бы стало 62x64 а сейчас при использовании кода
$this->Image_Resize($sFileTmp,$sUploadPath,"logo_type_{$oCompany->getUrl()}_64x64",3000,3000,64,null,true,$aParams)) {
оно становится 64x96 а если меняешь переменные 64,null на null,64 то выдаёт ошибку при загрузке.Так же выдаёт ошибку если меняешь 3000,3000 на 64,64 я так понимаю, эти 2 переменные отвечают за максимальное разрешение изображения.
Пробовал сделать и так 64,64,null,null и снова выдаёт ошибка, а если делаешь 3000,3000,64,64 то из изображения получается квадратная аватарка с растягиванием..:(
8 комментариев
Объяснил бы лучше в чём может быть проблема.
А самое главное зашкерился и даже нечего не написал…
итак по сути вопроса берем на примере загрузки фото к профилю, открываем файл \classes\modules\user\User.class.php, находим функцию UploadFoto в ней кусок кода начинаем менять 6 параметр (значение 250) и смотреть что имеем на выходе:
250 -> 64
фото 400х400 -> выхлоп 64x64
фото 1366х768 -> выхлоп 64x36
фото 400х600 -> выхлоп 64x96
дальше открываем фотошоп создаем новые листы с размерами 400х400, 1366х768, 400х600 и уменьшаем поочередно к ширине 64 — выхлопы у каждого становятся 64x64, 64x36, 64x96. тоже самое с уменьшением к 48, 24, 12
Внимание вопрос! — в каком месте криво ресайзит? или может всеже Вам стоит посмотреть на руки?
В чем дело? Лезем в код \engine\modules\image\Image.class.php и наблюдаем код, которий чуть больше чем абсолютно не ровно дышит к высоте и ширине… Например параметр iWidthDest задать null а iHeighthDest не null (дык сразу надо было так делать), то картинка вообше не изменит размер свой! Хотя должна изменить высоту и подогнать ширинцу по логике, как с шыриной.
На мой взгяд код должен быть симетричним к обоим параметрам, над чем собсно и колдую сейчас.
Фото к профилю добавляется на основании элемента width 250 а height null автоматически пропорционально уменьшается, но если поменять значения на width null а height 250 то начинает выдоваться ошибка…
А с Config::Get('view.img_max_width'),Config::Get('view.img_max_height') происходит ещё интереснее, если их делаешь меньше размера загружаемого изображения то тоже выдаётся ошибка, возможно это только у меня так, и даже не знаю с чем это может быть связано..:(
Это я пытаюсь сделать к фотографии плагина «Компании».