Путь к картинкам битрикс

Как через API Битрикса получить URL изображения, если известен ID изображения.

Например создано свойство инфоблока «Дополнительные фото», тип «Файл», формат добавляемых файлов «Изображения». Если выводить это свойство в шаблоне детальной страницы комплексного компонента news или catalog, то мы получаем только ID файла. Чтобы получить полный путь до файла, воспользуемся методом CFile::GetPath

$arResult[PROPERTY_641] — это ID файла с изображением

Как в Bitrix с помощью SQL можно менять картинку товара на первью или в материале?

Все записи товаров находятся в таблице b_iblock_element . В ней есть папки столбцы priview_picture и detail_picture проблема в том что в них совсем не пути или ссылки а просто численный значения не понятно как связанные с финальной папкой в которой лежат изображения.

Например цифре 2 в detail_picture соответствует путь /upload/iblock/852/8528fffbee0d8eb38ba44856ea8d222b.jpg

2 ответа 2

в таблице b_file записи с изображениями есть айдишники и их пути.

Изменить автоматическую генерацию имен файлов и сохранять оригинальные названия можно в настройках главного модуля "Сохранять исходные имена загружаемых файлов".

Очень редко в битриксе возникает необходимость обращаться напрямую к БД. Чтобы получить список элементом детальными изображениями можно воспользоваться следующей конструкцией:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками sql битрикс или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

Читайте также  Программа для сканирования xerox 3335

Вы наверняка задавались вопросом «Что это за цифры и где мой путь к картинке?» 🙂 Давайте разберем несколько примеров, как с этим можно работать.

Как узнать полный путь к картинке в Битриксе

Файлы изображений нам обычно нужны, когда мы говорим за новости или товары. За такие поля, как правило, отвечают свойства элемента «Картинка для анонса» и «Детальная картинка«. Иногда, создают свойства инфоблока, тип этого свойства файл, и используют для дополнительных изображений (например, галерея товаров). Вся проблема в том, что Битрикс не даст вам сразу готовый путь к файлу изображения, или к его уменьшенной ресайз копии.

Советую для начала прочесть небольшую статью про вывод элементов на странице т.к. в дальнейшем мы столкнемся с похожим кодом.

Как видите, мы добавили ‘PREVIEW_PICTURE‘ и ‘DETAIL_PICTURE‘ в массив, который называют arSelect. На моей тестовой копии Битрикса, когда вывожу значения в поле ‘PREVIEW_PICTURE’ получаю

и на самом деле все отработало правильно, мы получили «код изображений», некий уникальный идентификатор файла, по которому мы сможем получить данные.

В 1С-Битрикс есть класс CFile — который используется для работы с файлами и изображениями. Мы воспользуемся его методом GetPath и получим полный путь к изображению на примере картинки для анонса (для детальной все точно также):

Теперь у меня выводит:

Отлично, это то что нужно. Теперь мы при помощи HTML тега img сможем задать картинке путь. Меняем нашу строчку с echo

Как изменить размер изображений в Битриксе или выполнить ресайз

Перед тем как создать проект или новый инфоблок, всегда думайте «какого размера должны быть мои изображения«. Это очень важно, т.к. если вы не настроите в информационном блоке уменьшение картинки после загрузки, генерацию картинки анонса из детальной (если нужно) и прочие параметры, то размер вашей страницы может превышать несколько мегабайт (а в очень редких случаях даже больше 10 мб 🙂 ).

Читайте также  Символ табуляции как поставить

На самом деле, когда вы строго задаете размеры изображению, используя CSS, картинка все равно грузится в полном размере, и такие вещи не прокатят:

Это не решит нашу проблему с размером исходного изображения на странице, и единственные допустимые правила, на мой взгляд, могут быть max-width и max-height.

Рассмотрим случай, когда у нас уже есть большие картинки и мы хотим получить их уменьшенные копии. Нам поможет метод CFile::ResizeImageGet. Его преимущество в том, что когда мы запускаем страницу, он создает картинки в папке /upload/resize_cache/путь — и если такая картинка уже есть, он автоматически вернет нам путь к ней. Кроме того, мы можем задавать любой размер, качество и даже вид масштабирования изображений.

Вот какие типы нам доступны (информация взята из официальной документации Битрикс):

  • BX_RESIZE_IMAGE_EXACT — масштабирует в прямоугольник $arSize c сохранением пропорций, обрезая лишнее;
  • BX_RESIZE_IMAGE_PROPORTIONAL — масштабирует с сохранением пропорций, размер ограничивается $arSize;
  • BX_RESIZE_IMAGE_PROPORTIONAL_ALT — масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.

Давайте попробуем уменьшить наши картинки используя ResizeImageGet:

$img_resize_path[‘src’] — надеюсь вы заметили что этот метод возвращает нам массив, и нам нужен только src.

Разберем по порядку:

$ar_fields[«PREVIEW_PICTURE»] — поле для кода файла (для детальной меняем на $ar_fields[«DETAIL_PICTURE»]),

array(‘width’=>’100′, ‘height’=>’150′) — размеры итогового изображения (или вышеупомянутый arSize),

BX_RESIZE_IMAGE_PROPORTIONAL — тип масштабирования, про котором наши изображения не будут вылазить за указанные границы.

В официальной документации этого метода есть подробное описание, кроме того, там описываются остальные 4 параметра, которые мы тут не использовали (InitSizes, Filters, Immediate, jpgQuality).

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Читайте также  Производственно технический отдел на английском

Какие услуги предоставляю:
— Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
— Разработка функционала с нуля и доработка кода на уже созданных проектах;
— Адаптивная вёрстка макетов и натяжка на Битрикс;
— Парсинг файлов и выгрузка на сайт (форматы — CSV, XML, XLSX, JSON)
— Интеграции со сторонними сервисами по API;
— Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Популярные статьи:

3 комментария

Скажите, а как вытащить полную картинку из страницы? Например есть сайт ГИБДД, где есть превьюшки фото и нужно вытащить из них полное фото

Вам нужно использовать вместо PREVIEW_PICTURE — DETAIL_PICTURE. Замените в коде выше

Василий, убираете из URL — resize_cache и hash-сумму, и будет Вам радость!

Ссылка на основную публикацию
Adblock
detector