Генерация картинок для анонса программными способами
Добрый день,
У меня возникла небольшая проблема связанная с картинками анонса, на днях поменяли хостера и во время миграции сайта на новый хост по пути потеряли ряд папок с картинками анонса, но с детальной картинкой все в порядке. Картинка анонса меняется в случае когда аплодим новую картинку для деталей товара, но так как товаров очень много практический не возможно вручную аплодит картинки, так как вот возможно ли написать некий скрип который сгенерировал бы картинки для анонса для всех товаров.
Проект работает на основе «1С-Битрикс: Управление сайтом 10.0.10».
Заранее спасибо всем за помощь.
Сообщений: 1348 Баллов: 225 Регистрация: 18.06.2014
02.03.2015 09:23:08
напишите скрипт который пройдется по нужным инфоблокам возьмет детальную картинку, сресайзит и запихнет в превью.
точнее отвечая на ваш вопрос- да возможно.
Заглянувший
Сообщений: 7 Регистрация: 02.03.2015
02.03.2015 09:34:47
| Цитата |
|---|
| Виталий Черепанов написал: напишите скрипт который пройдется по нужным инфоблокам возьмет детальную картинку, сресайзит и запихнет в превью. точнее отвечая на ваш вопрос- да возможно. |
Спасибо Виталий,
Я на днях начал изучать битрикс, я затрудняюсь на данный момент реализовать вами высше сказаное предложение, может кто нибудь предоставить небольшой пример ?
Постоянный посетитель
Сообщений: 205 Баллов: 16 Регистрация: 16.12.2013
02.03.2015 10:33:22
Битрикс Разработчик, чтобы не писать специальных скриптов и не перегружать фотографии, можете их ресайзить «на лету» в шаблоне вывода товара.
Для этого просто пропишите этот код:
$thumbFile = CFile::ResizeImageGet($arResult['DETAIL_PICTURE']['ID'], array('width'=>150, 'height'=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true);
| Цитата |
|---|
| Функция уменьшает картинку и размещает уменьшенную копию в папку /upload/resize_cache/путь . Один раз уменьшив изображение получаем физический файл, который позволяет при последующих обращениях не проводить операции по уменьшению изображения. При следующем вызове функция вернет путь к уменьшенному файлу. |
Подробнее о функции можете почитать тут .
Заглянувший
Сообщений: 7 Регистрация: 02.03.2015
02.03.2015 11:07:56
Всем спасибо,
| Цитата |
|---|
| Максим Веряскин написал: $thumbFile = CFile::ResizeImageGet($arResult[‘DETAIL_PICTURE’][‘ID’], array(‘width’=>150, ‘height’=>150), BX_RESIZE_IMAGE_PROPORTIONAL, true); |
Всем спасибо за ваши просьбы,
Проблема на самом деле была у меня специфическая, во всяком случае решил поделится ею, возможно кто нибудь столкнется с ней как и я
Так вот на самом деле эта функция » CFile::ResizeImageGet() » была вписана в шаблон, но как то после копирования файлов на новый хостинг некоторые из них скопировались не верно. Файлы были на диске, но они весили 0 байт, и соответственно по логике не создавалась картинка анонса, поскольку она уже лежала на сервере (только грубо говоря была пустая), так вот я удалил все пустые файлы и как уже было указано выше с помощи функции » CFile::ResizeImageGet() » создались уже цельные картинки анонса.
Еще раз хочу поблагодарить всех за помощь !
Страницы: 1
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Как сделать множественные картинки для анонса автоматически?

второй вариант, но свойство все же одно, допустим доп. изображения. если стандартный компонент, то в резалт_модифаер списка, уменьшаешь картинки до нужного размера (ну а если свой компонент, можешь в нем уменьшить)
Aricus @Aricus Автор вопроса
scottparker, Уточните, правильно ли я понял? CFile::ResizeImageFile сохраняет файл в указанном месте и с указанном названием. Нужно сделать папку, в директории сайта, где будут храниться миниатюры. В нём будут папки с символьным кодом товара, а в нём файлы с таким же названием, как у исходного файла. В result_modifier.php шаблона проверяется, есть ли такой файл. Если нет — создаётся. И передаётся путь в сам шаблон. Чтобы обновить миниатюры, достаточно удалить содержимое этой папки: оно пересоздастся автоматически по мере первого захода в разделы каталога.

scottparker @scottparker
Aricus, не нужно создавать никакие папки вручную и проверять их наличие и тд. функция все сделает сама
Массовое заполнение изображений товара
Добрый день. Есть сайт (1000 товаров). Все товары без картинок. Отдельно есть папка со всеми картинками к товарам. Имена файлов изображений совпадают с названиями товаров. Можно ли как-то автоматом заполнить все товары картинками. Или все же придется заполнять по одному?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Слайдер изображений в теле карточки товара
странно, нашел только платное решение, в нете полно всяких ява слайдеров бесплатных. на примере.
Автоматическое создание картинки для анонса товара в каталоге из дополнительных изображений
Добрый день. Есть следующая проблема. В интернет магазине у всех товаров в каталоге загружены.
Массовое уменьшение изображений
Не давно сталкивался с такой проблемой, что фото от многопиксельных современных фотоаппаратов имеют.

Массовое обрезание изображений
Здравствуйте, подскажите пожалуйста программу для массового обрезания изображений сверху и снизу.
2268 / 1174 / 238
Регистрация: 16.03.2008
Сообщений: 5,664
Записей в блоге: 2
Что значит массово и по однму. Можно написать скрипт, где пройтись по всем картинкам, найти каждой соответсвующий товар и залить через апи. Можно идти по товарам и искать картинку. Действие «массовое», но все равно «по товарное»
Регистрация: 03.02.2019
Сообщений: 4
Сообщение от voral 
Можно написать скрипт, где пройтись по всем картинкам, найти каждой соответсвующий товар и залить через апи
Сколько такой скрипт будет стоить?
Регистрация: 16.03.2020
Сообщений: 6
Сделать выгрузку в csv прицепить ссылку и загрузить. Предварительно не забудьте настроить правила работы вот тут Рабочий стол-Контент-Инфоблоки-Типы инфоблоков-Каталоги- ваше название каталога- вкладки поля и поля разделов ограничение детальной по размерам, автоматическое формирование превью. Обычно делаю выгрузку через раздел магазина.
зы а еще лучше прогнать предварительно картинку через tyni или аналог
Регистрация: 06.03.2021
Сообщений: 1
Сообщение от Mirage_lav 
Сделать выгрузку в csv прицепить ссылку и загрузить. Предварительно не забудьте настроить правила работы вот тут Рабочий стол-Контент-Инфоблоки-Типы инфоблоков-Каталоги- ваше название каталога- вкладки поля и поля разделов ограничение детальной по размерам, автоматическое формирование превью. Обычно делаю выгрузку через раздел магазина.
зы а еще лучше прогнать предварительно картинку через tyni или аналог
Подскажите, а вы ссылку цепляете на изображения откуда? Вы на хостинг предварительно изображения выгружаете или на сам сайт в отдельную папку сначала, а потом удаляете?
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Массовое редактирование изображений — изменение размера, поворот, наложение эффектов
ребят, всем привет у меня такой вопрос возник, я делаю программ для массового редактирования.
Смена изображений товара при клики на цвета
Как считаете правильно подойти к такой задаче (сделать прокрутку изображений по цветам) ? : 1).
Как добавить несколько изображений для одного товара?
Добрый день! Есть такая проблема: на сайт (OpenCart) к каждому товару нужно привязать несколько.

ТОрг12 заполнение товара и артикула вывод строк
Помогите у меня выводит сначала 6 строк наименование товара и артикул у них указан параметр.
Битрикс как автоматически заполнять картинку анонс товара
Инструменты, коллекции, групповые действия / Перекрестные продажи / Аналогичные, рекомендуемые, похожие товары / Аксессуары
- Описание курса
- Функционал
- Механизм коллекций и групповые действия
- Групповое редактирование свойств
- Перекрестные продажи / Аналогичные, рекомендуемые, похожие товары / Аксессуары
- Счетчики и дублирование информации
- Расширенные Пункты меню
- Синхронизация разделов и элементов разных инфоблоков
- Генератор торговых предложений (SKU)
- Автоматическое создание картинки для анонса и детальной картинки товара из дополнительных изображений
- Настройка редиректов со старых URL на новые
- Настройка title, h1 и хлебных крошек. Взаимодействие со стандартными возможностями SEO
- Нестандартная сортировка товаров в каталоге
- Новинки, лидеры и хиты продаж. Реализация стикеров
Автоматическое создание картинки для анонса и детальной картинки товара из дополнительных изображений
Наверное, всем известна опция в настройках инфоблока Создавать картинку анонса из детальной (если не задана). Но как быть, если PREVIEW_PICTURE или DETAIL_PICTURE нужно создавать из дополнительных изображений MORE_PHOTO?
Существует различное варианты реализации. Предлагаем во внимание способ решения через механизм коллекций модуля Инструменты, коллекции, групповые действия.
Преимуществом данного подходя является возможность записи превью и детальных картинок как автоматом при изменении дополнительных картинок. так и массовое редактирование для уже существующих элементов инфоблока. Кроме того можно использовать оба варианта, так и по отдельности.
Приведенная в данном материале информация не является каким то обязательным правилом. Это один из вариантов решения.
Суть метода состоит в следующем:
- Используется произвольноеPHP-действиемеханизма коллекций.
- Настраивается коллекция с действием Произвольное PHP выражение, программируется функция обработки картинок.
Настроенная коллекция:
Функцию необходимо определить в init.php . Назовём его, например, __set_picture(). Для начала как выглядит сама функция в нашем исполнении:
function __set_picture($arFields,$arUserFields = array(),$is_preview,$is_detail) < if ($arFields['ID'] >0 && $arFields['IBLOCK_ID'] > 0) < $property_code = "MORE_PHOTO"; //КОД свойства Изображения [MORE_PHOTO] - указывать свой $property_id = 45; //ИД свойства Изображения [MORE_PHOTO] - указывать свой $btrue = false; $file = false; if (is_array($arUserFields['PROPERTY'][$property_code]['VALUE']) && count($arUserFields['PROPERTY'][$property_code]['VALUE'])>0) < $first_file_id = $arUserFields['PROPERTY'][$property_code]['VALUE'][0]; >if (is_array($arUserFields['PROPERTY_VALUES'][$property_id]) && count($arUserFields['PROPERTY_VALUES'][$property_id])>0) < if (is_array($arUserFields['PROPERTY_VALUES'][$property_id]['n0']['VALUE'])) //если грузятся картинки через админку < if ($arUserFields['PROPERTY_VALUES'][$property_id]['n0']['VALUE']['error']==0) $btrue = true; >elseif (is_array($arUserFields['PROPERTY_VALUES'][$property_id]) //если грузятся картинки через апи с указанием ИД свойства && isset($arUserFields['PROPERTY_VALUES'][$property_id]['name'])) < if ($arUserFields['PROPERTY_VALUES'][$property_id]['error']==0) $btrue = true; >elseif (is_array($arUserFields['PROPERTY_VALUES'][$property_code]) //если грузятся картинки через апи с указанием КОДА свойства && isset($arUserFields['PROPERTY_VALUES'][$property_code]['name'])) < if ($arUserFields['PROPERTY_VALUES'][$property_code]['error']==0) $btrue = true; >> //если меняются Изображения if ($btrue) < if (!is_array($file)) < $db_props = CIBlockElement::GetProperty($arFields['IBLOCK_ID'], $arFields['ID'], array("sort" =>"asc"), Array("CODE"=>$property_code)); if($ar_props = $db_props->Fetch()) < $first_file_id = $ar_props['VALUE']; >> if ($first_file_id>0) < if ($first_file_id>0) $file = CFile::MakeFileArray($first_file_id); $el = new CIBlockElement; $arload = Array(); if ($is_preview) $arload["PREVIEW_PICTURE"] = $file; if ($is_detail) $arload["DETAIL_PICTURE"] = $file; $res = $el->Update($arFields['ID'], $arload); > > > >- $arFields — массив, описывающий элемент инфоблока. (доступен в функции из механизма коллекций)
- $arUserFields — массив, описывающий элемент инфоблока в обработчике событий добавления/редактирования элемента. При ручной индексации равен $arFields. При индексации с помощью обработчиков событий, возвращает массив полей элемента информационного блока. (доступен в функции из механизма коллекций)
- $is_preview и $is_detail — самостоятельно определяемые параметры, указывают редактировать или нет анонсовую или детальную картинку соответственно.
