Перейти к содержимому


Фото
- - - - -

Кадрирование изображений товаров

ресайз кадрирование

  • Чтобы отвечать, сперва войдите на форум
49 ответов в теме

#21 question

question
  • Пользователь
  • 82 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 27.07.2018 - 12:08

?????



#22 question

question
  • Пользователь
  • 82 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 05.08.2018 - 13:22

мурк



#23 phukortsin

phukortsin
  • Пользователь
  • 584 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 05.08.2018 - 15:23

Если Вам сильно нужен этот функционал, ищите серьезного разработчика на серьезной основе.

 

А такое муркание, кроме прочего, есть нарушение правил форума.

 

И обращайте внимание на даты. Тот товарищ, который Вам легкомысленно пообещал, на форум не заглядывал уже месяц. Думаете, не ест, не пьет, на форум не заходит, на курорт не поехал, целыми днями сидит и решает Вашу задачу?



#24 question

question
  • Пользователь
  • 82 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 13.08.2018 - 23:02

Просто товарищ пиздабол



#25 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 822 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 14.08.2018 - 09:23


Просто товарищ пиздабол


Одним словом быдло.

#26 phukortsin

phukortsin
  • Пользователь
  • 584 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 14.08.2018 - 09:51

Таких товарищей и таких случаев тут полно.

 

Например, в теме

http://forum.simplac...ленных-катерий/

один товарищ

1. Сначала написал "Напомните мне завтра, распишу решение", после чего напоминание поступило с утра.

2. Ближе к вечеру он ответил "Извините сегодня никак не успеваю, постараюсь в субботу".

3. С тех прошла и суббота и еще пару лет, решения не видано...

4. Но тот товарищ в стиле хорошего клоуна сделал приписку "ведь я не обещал расписать решение именно на форуме". Возможно, намекает, что он решение давно расписал на бумажке и повесил у себя в каком-нибудь отдельном помещении.

5. Балабол и есть балабол:

http://forum.simplac...ервер/?p=106785

 

А Вам надо бы относиться к  таким товарищам  и таким обещаниям проще. То, что они обещают, обычно требует и квалификации и трудозатрат, и редко делается бесплатно. Надо подходить к вопросу реально - они Вам ничего не должны, это общедоступный форум, каждый может писать то, что сочтет нужным...



#27 question

question
  • Пользователь
  • 82 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 20.08.2018 - 11:36

Надо подходить к вопросу реально - они Вам ничего не должны, это общедоступный форум, каждый может писать то, что сочтет нужным...

Вот именно: что считаю нужным, то и пишу. Хочу - называю людей своими именами, пусть это грубо, но правда.



#28 bananovsv

bananovsv
  • Пользователь
  • 139 сообщений

Опубликовано 23.08.2018 - 18:32

Там готовая сборка, хотелось бы для своей версии сделать.

ТС, у вас что-то получилось?

 

Да, я сделал, чтобы резалось под квадрат, если нет параметра в шаблоне. Если есть параметр, то по умолчанию.

 

Работает так:

<img src="{$image->filename|resize:0:750:r}"> — по умолчанию.

<img src="{$image->filename|resize:0:750}"> — режет под квадрат.

 

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


Изменено: bananovsv, 23.08.2018 - 18:42


#29 question

question
  • Пользователь
  • 82 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 26.08.2018 - 09:02

Да, я сделал, чтобы резалось под квадрат, если нет параметра в шаблоне. Если есть параметр, то по умолчанию.

 

Работает так:

<img src="{$image->filename|resize:0:750:r}"> — по умолчанию.

<img src="{$image->filename|resize:0:750}"> — режет под квадрат.

 

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

Можете поделиться решением?



#30 bananovsv

bananovsv
  • Пользователь
  • 139 сообщений

Опубликовано 26.08.2018 - 16:54

Можете поделиться решением?

 

Скажите, какая конкретно логика вам нужна, я попробую выделить. У меня там много кастомного кода, не относящегося к этому.

 

Вам нужно всегда резать под квадрат или только иногда?



#31 shooroop

shooroop
  • Фрилансер
  • 758 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 26.08.2018 - 17:05

Скажите, какая конкретно логика вам нужна, я попробую выделить. У меня там много кастомного кода, не относящегося к этому.

 

Вам нужно всегда резать под квадрат или только иногда?

 

а он как режет квадрат ? если все на всем размере 10х50 пикс занимает изображение. он добавит пустые пиксели и получиться 50х50 ? или он обрежет изображение по меньшей стороне и получиться 10х10



#32 bananovsv

bananovsv
  • Пользователь
  • 139 сообщений

Опубликовано 26.08.2018 - 17:37

а он как режет квадрат ? если все на всем размере 10х50 пикс занимает изображение. он добавит пустые пиксели и получиться 50х50 ? или он обрежет изображение по меньшей стороне и получиться 10х10

 

Белый не добавляет. Делает квадрат по меньшей стороне и режет в центре.

rbrt.jpg

 

Аналогично с вертикальными изображениями.



#33 question

question
  • Пользователь
  • 82 сообщений
  • Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 27.08.2018 - 09:04

Скажите, какая конкретно логика вам нужна, я попробую выделить. У меня там много кастомного кода, не относящегося к этому.

 

Вам нужно всегда резать под квадрат или только иногда?

Лучше расскажу подробно.

На сайте куча картинок товаров с размерами 786х800, 743х412, 800х600, 1024х500, 1024х2048 и т.д..., плюс адаптивная вёрстка,И все эти картинки надо выводить в шаблоне с одинаковым соотношением сторон, а не просто менять размер.

Поэтому хотелось бы иметь ресайз для обычного вывода картинки и ресайз с параметром, который приведёт картинки к единому размеру, обрезав края.

Да, я знаю, что это можно решить в шаблоне через div style="background:...", но отношение поисковиков в этом случае, как показала практика, не очень хорошее - им подавай картинки именно через тег <img src=>.

Собственно, всё. Мне нужен кроп картинок и, если используется параметр, то обрезка.



#34 DaVinci

DaVinci
  • Фрилансер
  • 1 141 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 27.08.2018 - 09:13

Лучше расскажу подробно.
На сайте куча картинок товаров с размерами 786х800, 743х412, 800х600, 1024х500, 1024х2048 и т.д..., плюс адаптивная вёрстка,И все эти картинки надо выводить в шаблоне с одинаковым соотношением сторон, а не просто менять размер.
Поэтому хотелось бы иметь ресайз для обычного вывода картинки и ресайз с параметром, который приведёт картинки к единому размеру, обрезав края.
Да, я знаю, что это можно решить в шаблоне через div style="background:...", но отношение поисковиков в этом случае, как показала практика, не очень хорошее - им подавай картинки именно через тег <img src=>.
Собственно, всё. Мне нужен кроп картинок и, если используется параметр, то обрезка.


На гитхабе много готовых библиотек. Достаточно подключить к своему проекту, работы на 5 минут

#35 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 822 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 27.08.2018 - 11:24

Белый не добавляет. Делает квадрат по меньшей стороне и режет в центре.
rbrt.jpg
 
Аналогично с вертикальными изображениями.

А вы фанат старка :D

#36 bananovsv

bananovsv
  • Пользователь
  • 139 сообщений

Опубликовано 27.08.2018 - 16:14

Лучше расскажу подробно.

На сайте куча картинок товаров с размерами 786х800, 743х412, 800х600, 1024х500, 1024х2048 и т.д..., плюс адаптивная вёрстка,И все эти картинки надо выводить в шаблоне с одинаковым соотношением сторон, а не просто менять размер.

Поэтому хотелось бы иметь ресайз для обычного вывода картинки и ресайз с параметром, который приведёт картинки к единому размеру, обрезав края.

Да, я знаю, что это можно решить в шаблоне через div style="background:...", но отношение поисковиков в этом случае, как показала практика, не очень хорошее - им подавай картинки именно через тег <img src=>.

Собственно, всё. Мне нужен кроп картинок и, если используется параметр, то обрезка.

 

Я скажу, как реализовано у меня, а вы решайте, подходит ли вам это. Выше ДаВинчи предлагает библиотеку — наверняка так лучше будет, но я так не умею и хотел реализовать всё родными средствами Симплы.

 

1. В файл api/Design.php в функцию resize_modifier добавить свой параметр ($aspect) в двух местах перед ватермарком. Получится так:

public function resize_modifier($filename, $width=0, $height=0, $aspect=false, $set_watermark=false)
{
    $resized_filename = $this->image->add_resize_params($filename, $width, $height, $aspect, $set_watermark);
    $resized_filename_encoded = $resized_filename;
    
    if(substr($resized_filename_encoded, 0, 7) == 'http://')
        $resized_filename_encoded = rawurlencode($resized_filename_encoded);


    $resized_filename_encoded = rawurlencode($resized_filename_encoded);


    return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename);
}

 

2. В файл api/Image.php добавить свой параметр везде по аналогии с $set_watermark.

 

Вот Image.php со всеми изменениями:

https://cl.ly/56a42c69cdad/Image.php

 

 

3. Там же в функцию image_constrain_imagick (если используете imagick) добавить логику обрезки (тут под квадрат):

if($aspect)
    list($dst_w, $dst_h) = $this->calc_contrain_size($src_w, $src_h, $max_w, $max_h);
elseif($src_w >= $src_h) 
{
    $thumb->cropImage($src_h, $src_h, (($src_w/2)-($src_h/2)), 0);
    list($dst_w, $dst_h) = $this->calc_contrain_size($src_h, $src_h, $max_w, $max_h);
}
elseif($src_w < $src_h) 
{
    $thumb->cropImage($src_w, $src_w, 0, (($src_h/2)-($src_w/2)));
    list($dst_w, $dst_h) = $this->calc_contrain_size($src_w, $src_w, $max_w, $max_h);
}

 

Собственно, всё. Если в шаблоне стоит параметр — будет по умолчанию, если нет — резка. Если нужен ватермарк, то так:

<img src="{$image->filename|resize:0:750:r:w}">

 

Вам останется изменить только логику обрезки на ту, которая вам нужна.

 

Вся логика встроена в родной resize, для моих задач не было смысла выделять всё в отдельную функцию типа crop. На эталонность решения не претендую. Возможно, что уважаемые форумчане предложат более изящное решение.

 

 

P. S. Если не стоит вопрос поддержки устаревших браузеров, то вашу задачу можно решить парой стилей с помощью флекса.


Изменено: bananovsv, 27.08.2018 - 16:19


#37 DaVinci

DaVinci
  • Фрилансер
  • 1 141 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 27.08.2018 - 16:46

стоит отказаться от функции через смерти с дикими наборами магических переменных |resize:0:750:r:w в пользу объекта с соответствующими методами 

 

$image->getResize($w, $h, ...)

$image->getCrop($w, $h, ...)

 

к этим методам можно подключить любые обработчики изображения а методы в макете больше не будут зависеть от внутренней реализации и от шаблонизатора в частности. так как нарезка нужна не только в макете, к примеру в выгрузке где нам с какого то перепуга для того что бы нарезать изображение надо обращаться к api Design $simpla->design->resize_modifier($p->image, 200, 200) - дичь!!!


Изменено: DaVinci, 27.08.2018 - 16:48


#38 phukortsin

phukortsin
  • Пользователь
  • 584 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 27.08.2018 - 16:56

стоит отказаться от функции через смерти с дикими наборами магических переменных |resize:0:750:r:w в пользу объекта с соответствующими методами 

 

$image->getResize($w, $h, ...)

$image->getCrop($w, $h, ...)

 

к этим методам можно подключить любые обработчики изображения а методы в макете больше не будут зависеть от внутренней реализации и от шаблонизатора в частности. так как нарезка нужна не только в макете, к примеру в выгрузке где нам с какого то перепуга для того что бы нарезать изображение надо обращаться к api Design $simpla->design->resize_modifier($p->image, 200, 200) - дичь!!!

 

Да, стоит.

Но если уж говорить об изображениях, то там стоит сделать еще много чего - например, нарезку изображений не только для товаров, но и для прочих сущностей. К слову, в OKAY это давно сделано - не идеально, но сделано...



#39 DaVinci

DaVinci
  • Фрилансер
  • 1 141 сообщений
  • Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:SimplaDev.ru

Опубликовано 27.08.2018 - 16:57

Да, стоит.

Но если уж говорить об изображениях, то там стоит сделать еще много чего - например, нарезку изображений не только для товаров, но и для прочих сущностей. К слову, в OKAY это давно сделано - не идеально, но сделано...

 

ну автору виднее почему он не делает нарезку изображений для всех сущностей. проблем с этим особых нет.



#40 bananovsv

bananovsv
  • Пользователь
  • 139 сообщений

Опубликовано 27.08.2018 - 19:08

стоит отказаться от функции через смерти с дикими наборами магических переменных |resize:0:750:r:w в пользу объекта с соответствующими методами 

 

$image->getResize($w, $h, ...)

$image->getCrop($w, $h, ...)

 

к этим методам можно подключить любые обработчики изображения а методы в макете больше не будут зависеть от внутренней реализации и от шаблонизатора в частности. так как нарезка нужна не только в макете, к примеру в выгрузке где нам с какого то перепуга для того что бы нарезать изображение надо обращаться к api Design $simpla->design->resize_modifier($p->image, 200, 200) - дичь!!!

 

Будет здорово, если поделитесь решением.







Также с меткой «ресайз, кадрирование»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых