evoname Опубликовано 15 марта, 2018 Жалоба Поделиться Опубликовано 15 марта, 2018 Здравствуйте!Коллеги, в php не волоку никак, знаком только с html и css. Занимаюсь вёрсткой собственного маленького инет-магаза на симпле. Столкнулся с проблемой использования костылей из серии необходимости задания максимального размера картинки при показе в css ибо штатная функция ресайза работает не очень удобно, ей необходимо задавать обе стороны изображения и сжатие идет с учетом соотношения сторон.Поскольку используемые изображения зачастую весьма отличаются по размеру, было бы недурно привести их к единому знаменателю, однако имеющиеся на форуме решения не идут дальше добавления полосок сверху и снизу в изображение.В то же время в другом проекте, который я помогал недавно верстать в Grav CMS есть весьма удобная фишка - cropZoom, которая делает ресайз картинки по большей стороне, но без белых полей. Данный функционал опирается на библиотеку Gregwar Image.Подскажите пожалуйста кто-нибудь грамотный в php, как можно быстро интегрировать эту библиотеку в simpla, если не затруднит.В сущности интересует использование только этой функции (cropZoom), остальное не интересует.Заранее очень благодарен. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 15 марта, 2018 Жалоба Поделиться Опубликовано 15 марта, 2018 (изменено) Очень крутая либа https://github.com/claviska/SimpleImage легко интегрировать в симплу. Изменено 15 марта, 2018 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
evoname Опубликовано 15 марта, 2018 Автор Жалоба Поделиться Опубликовано 15 марта, 2018 Теоретически понял, что надо взять этот кусок: <?php try { // Create a new SimpleImage object $image = new \claviska\SimpleImage(); // Magic! $image ->fromFile('image.jpg') // load image.jpg ->autoOrient() // adjust orientation based on exif data ->resize(320, 200) // resize to 320x200 pixels ->flip('x') // flip horizontally ->colorize('DarkBlue') // tint dark blue ->border('black', 10) // add a 10 pixel black border ->overlay('watermark.png', 'bottom right') // add a watermark image ->toFile('new-image.png', 'image/png') // convert to PNG and save a copy to new-image.png ->toScreen(); // output to the screen // And much more! } catch(Exception $err) { // Handle errors echo $err->getMessage(); } и вставить в Api\Image.php, туда же в API положить файл библиотеки SimpleImage.php (размерчик у нее конечно ппц, больше 0,5Мб)Однако ввиду моего полного незнания php, едва я добавляю кусок кода, то картинки на сайте превращаются в выдержку из гитхаба...Уважаемый Noxter, не могли бы вы сделать мне "рыбу" кода, которую я могу безболезненно встроить в свой image.php, и просто натолкать туда нужных мне параметров из API библиотеки?..Спасибо заранее! Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 15 марта, 2018 Жалоба Поделиться Опубликовано 15 марта, 2018 У меня нет готового решения под симплу, в другом проекте использовал эту либу как основную, на вашем месте я бы переписал полностью api/Image.php взяв за основу либу, но работа не малая, у меня около недели ушло чтобы всё довести до идеала. P.S. Вес большой потому как в либе есть куча фильтров, а-ля инстаграмм Цитата Ссылка на сообщение Поделиться на другие сайты
evoname Опубликовано 16 марта, 2018 Автор Жалоба Поделиться Опубликовано 16 марта, 2018 Спасибо. Понятно. Буду ковырять пробовать. Хотя с моими знаниями языков это будет явно больше недели))) Цитата Ссылка на сообщение Поделиться на другие сайты
Karabaska Опубликовано 16 марта, 2018 Жалоба Поделиться Опубликовано 16 марта, 2018 У меня нет готового решения под симплу, в другом проекте использовал эту либу как основную, на вашем месте я бы переписал полностью api/Image.php взяв за основу либу, но работа не малая, у меня около недели ушло чтобы всё довести до идеала. А почему так сложно и так долго? Ведь библиотека делается как раз для того, чтобы ее использовать одним простым вызовом с параметрами. Вроде бы в ней все готовое должно быть... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 марта, 2018 Жалоба Поделиться Опубликовано 16 марта, 2018 А почему так сложно и так долго? Ведь библиотека делается как раз для того, чтобы ее использовать одним простым вызовом с параметрами. Вроде бы в ней все готовое должно быть...Я же написал довести до идеала ушла неделя. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение evoname Опубликовано 16 марта, 2018 Автор Решение Жалоба Поделиться Опубликовано 16 марта, 2018 "Не умеешь работать головой - работай руками"Чет потрахался вчера вечерок и ни черта путного не выходит. Решил сразу готовить все картинки к загрузке в ФШ так, чтобы они были квадратными и одного размера. Геморно, но работает.Может в следующей версии разработчики включат эту или другую более продвинутую библиотеку в состав CMS.Всем спасибо за сочувствие. Цитата Ссылка на сообщение Поделиться на другие сайты
ST_RU Опубликовано 16 марта, 2018 Жалоба Поделиться Опубликовано 16 марта, 2018 "Решил сразу готовить все картинки к загрузке в ФШ так, чтобы они были квадратными и одного размера. Геморно, но работает."Всем спасибо за сочувствие. Если так делать: в adobe и corel photo-paint есть пакетная обработка файлов.можно скрипт сделать (записать свои действия) и фото много сразу обработать таким способом.если не всё, то многое так можно. Цитата Ссылка на сообщение Поделиться на другие сайты
cmssmarty Опубликовано 18 марта, 2018 Жалоба Поделиться Опубликовано 18 марта, 2018 штатная функция ресайза работает не очень удобно, ей необходимо задавать обе стороны Ну почему. Можно делать рессайз только по одной стороне: {$product->image->filename|resize:150:0} - Ширина будет 150, высота любая соответственно в соотношении. Или-же {$product->image->filename|resize:0:150} - Аналогично коду выше, но уже по высоте. Я думаю рессайз работает как раз очень удобно и логично в симпле. А вот в CSS, кстати, свойство max-height: 100% (именно в проценты, я не говорю о px) работает не всегда / не везде. Цитата Ссылка на сообщение Поделиться на другие сайты
evoname Опубликовано 2 апреля, 2018 Автор Жалоба Поделиться Опубликовано 2 апреля, 2018 Ну почему. Можно делать рессайз только по одной стороне:Фикус в том, что это именно ресайз. Т.е. если картинка прямоугольная, то у нее при ресайзе до квадрата будут белые поля. А мне нужен ресайз одновременно с кропом.Вот здесь есть функция zoomCrop - это то, что мне нужно... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.