Сжатие (уменьшение размера) файлов изображений 1С без внешних компонент - для любой конфигурации на основе БСП > 2.3

Публикация № 1207348

Администрирование - Администрирование данных 1С - Свертка базы

Выгрузка сжатие загрузка фото картинок изображений базы данных уменьшение размера большая база выгрузка на сайт тормозит Обработка оптимизация фотографий

Если в базу загружено большое количество изображений, картинок, фото товаров, размером более 2-3МБ, то в базе будут сильно тормозить все процессы, связанные с чтением-передачей файлов изображений: формирование прайса, отчетов с картинками, выгрузка изображений товаров на сайт и т.д. Данная обработка позволяет провести оптимизацию (уменьшение размера) загруженных картинок в базу 1С любой конфигурации на основе БСП >= 2.3 стандартными средствами 1С, сохраняя при этом достаточно хорошее качество сжатых картинок. Проверено на релизе УТ 11.4.11.71, для обработки понадобится также версия Платформы 1С >= 8.3.14.

Обработка позволяет:

1. как сжать отдельно выбранный файл 

При нажатии на кнопку "1. Поместить файл" - выбирается файл в каталоге клиента,

При нажатии на кнопку "2. Сжать файл" - выбранный файл передается на сервер, обрабатывается, возвращается обратно и сохраняется в каталоге клиента с тем же названием с постфиксом в конце "_сжатый"

В константах конфигурации необходимо добавить новую (можно расширением) "Высота картинки", если константы нет, по умолчанию фото "сжимается" до высоты 1200 пикселей (ширина пропорционально).

На примере тестового фото jpg результат таков:

до сжатия: 1708x2362 5,05 Мб

после сжатия: 868x1200 2,75 Мб

Можно сжимать еще больше, оптимальная высота/ширина подбираются визуально по степени необходимости качества сжатого фото.

2. так сжать и все файлы товаров в базе

Алгоритм обработки файлов базы выполняется аналогично, перебором в цикле всех файлов изображений товаров.

Можно предварительно сделать резервную копию всех изображений товаров до сжатия, нажав на "1. Сохранить все файлы", обработка скопирует все файлы изображений товаров из базы в выбранный каталог, а при нажатии на кнопку "2. Сжать все файлы", будут уменьшены размеры у всех изображений товаров в базе средствами Платформы 1С. 

Такие возможности работы с картинками доступны с версии Платформы 1С 8.3.14, подробнее про новые методы работы с картинками можно почитать в руководстве разработчика, глава 20, раздел 20.4 "Работа с картинками".

Скачать файлы

Наименование Файл Версия Размер
СжатиеИзображений.epf

.epf 9,22Kb
08.03.20
29
.epf 9,22Kb 29 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. BigB 181 09.03.20 00:32 Сейчас в теме
У меня у одного картинки не отображаются?
5. 1sig 168 09.03.20 12:22 Сейчас в теме
(1)у вас картинки не отображаются в статье?
10. BigB 181 09.03.20 19:37 Сейчас в теме
(5) Первая отображается, а вместо двух других - белые квадраты.
Прикрепленные файлы:
11. 1sig 168 09.03.20 20:14 Сейчас в теме
(10) спасибо, глюк инфостарта, в режиме редактирования подставляются другие (внутренние) ссылки на изображения
18. BigB 181 10.03.20 00:08 Сейчас в теме
(11) Вот теперь картинки отображаются все.
2. webester 33 09.03.20 07:03 Сейчас в теме
3. Xershi 1030 09.03.20 09:09 Сейчас в теме
Тестировали только на джипегах?
4. 1sig 168 09.03.20 12:21 Сейчас в теме
7. Xershi 1030 09.03.20 13:35 Сейчас в теме
(4) на svg еще протестируйте, там структура кажись немного другая.
9. Xershi 1030 09.03.20 15:51 Сейчас в теме
(7) хотя можете и по остальным форматам пробежаться.
12. 1sig 168 09.03.20 20:51 Сейчас в теме
(9)
одну картинку svg обработка "съела", на второй выдала ошибку:

"Ошибка при выполнении операции ImageMagick: 1cv8c.exe: NoDecodeDelegateForThisImageFormat ... @ error/svg.c/ReadSVGImage/3007"

судя по ошибке для работы с картинками используется кроссплатформенный пакет ImageMagick, а он работает с довольно внушительным списком форматов:
https://www.imagemagick.org/script/formats.php
на практике конечно проверять надо.

p.s.: в обработке установлен фильтр на след. форматы: *.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf
20. Xershi 1030 10.03.20 08:27 Сейчас в теме
(12)так я что то не так понял. БСП использует пакет? Тогда причём здесь без внешних компонент?
21. 1sig 168 10.03.20 08:35 Сейчас в теме
(20)
ImageMagick использует сам движок Платформы 1С (>=8.3.14), написанный на C, поэтому код обработки отдельного файла изображения будет работать и на чистой конфигурации.
БСП в заголовке указана только потому, что алгоритм групповой обработки обращается уже к объектам БСП, ответственным за хранение файлов изображений.
6. folo 176 09.03.20 13:25 Сейчас в теме
А не проще хранить файлы в каталоге вне базы ? Даже типовое решение это сейчас позволяет. Запаковать в зип с паролем если что.
Serega-artem; VAAngelov; SuhoffGV; +3 Ответить
8. SuhoffGV 09.03.20 13:41 Сейчас в теме
(6) зачем паковать в ЗИП с паролем? Достаточно того чтобы к папке с файлами был ограничен доступ средствами ОС. Оставить права пользователю, под которым работает сервер 1с, админу и, если есть, пользователю под которым работает служба резервного копирования.
13. 1sig 168 09.03.20 20:54 Сейчас в теме
(6)
верно - это и проще, и надежнее, и на ssd дисках пооптимальнее скорее всего будет, но у клиента база в облаках раруса, там сильно не разгонишься в ограниченных ресурсах их рядового сервака)
14. Moroz2009 09.03.20 21:04 Сейчас в теме
(13) мы сделали хранение файлов в yandex object storage - дёшево и сверхбыстро. Получается примерно 1,5тр за каждый терабайт данных в месяц - это чтение, запись, всяческие преобразования фото и видео на 2000 пользователей. Пришлось добавить вариант хранения в подсистеме хранения файлов. У Яндекса отдача может достигать терабайты в секунду и хранение в распределённых датацентрах. Ну и облачные базы становится выгоднее использовать - s3-хранилище гораздо дешевле, чем обычная база данных
ArchLord42; +1 Ответить
17. 1sig 168 09.03.20 23:16 Сейчас в теме
(14)
на 2000 пользователей - это конечно круто
15. CheBurator 3430 09.03.20 21:42 Сейчас в теме
То что в (0) называется сжатие - правильно именовать ресайзинг (resize) - изменение размера (если я правильно понял). А "сжатие" - это совсем из другой оперы.
16. 1sig 168 09.03.20 23:13 Сейчас в теме
(15)
верное замечание, просто обычно ключевое слово в поиске запросов по теме в основном так звучит :) и по факту цель всех манипуляций - уменьшение размера хранимых данных, вот "сжатие" размера файла и получается)
19. muskul 10.03.20 02:43 Сейчас в теме
22. kydesniklesa 05.04.20 20:14 Сейчас в теме
Доброго времени суток! Подскажите, пожалуйста, а возможно данной обработкой уменьшить размер *.pdf файлов?
23. 1sig 168 05.04.20 21:48 Сейчас в теме
(22)
теоретически может и сожмет

на практике скорее всего разработчики 1С ограничили эту возможность и будет исключение.
Прикрепленные файлы:
26. Spirit11 29 29.09.20 13:09 Сейчас в теме
Здравствуйте. Необходимо формировать прайс-лист с картинками в УНФ(фреш). Возможно ли сделать обработку сжатия для картинок прайса, не меняя размер картинок в хранилище?
27. 1sig 168 29.09.20 23:08 Сейчас в теме
(26) Здравствуйте! Можно попробовать сжимать "на лету" картинки для прайса, не меняя при этом размер картинок в хранилище. Но здесь надо смотреть, насколько такое решение будет тормозить формирование прайса.
28. Dwiss 159 15.10.20 18:50 Сейчас в теме
Неспецифицированная ошибка работы с ресурсом
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
Недостаточно свободной памяти для выполнения операции

вылетает с ошибкой
Разобрался, запустил 64 разрядную версию, все поехало, но выскакивает другая ошибка
Ошибка при выполнении операции ImageMagick: 1cv8c.exe: Cannot write PNG8 or color-type 3; colormap is NULL `C:\Users\virtuser\AppData\Local\Temp\v8_5E6E_3324' * error/png.c/WriteOnePNGImage/9270
{ВнешняяОбработка.СжатиеИзображений.Форма.Форма.Форма(47)}: НовКартинка = ОбрКартинка.ПолучитьКартинку();
{ВнешняяОбработка.СжатиеИзображений.Форма.Форма.Форма(68)}: КомандаВЫполнитьНаСервере();

по причине:
Ошибка преобразования картинки
по причине:
Ошибка при выполнении операции ImageMagick: 1cv8c.exe: Cannot write PNG8 or color-type 3; colormap is NULL `C:\Users\virtuser\AppData\Local\Temp\v8_5E6E_3324' * error/png.c/WriteOnePNGImage/9270
29. 1sig 168 17.10.20 21:11 Сейчас в теме
(28)
Добрый день!

Да, ошибка воспроизвелась при попытке сжать картинку в формате png8 - глубина цвета 8 бит (256 цветов), видать что то глючит в используемом движке ImageMagick, как вариант, в таких ситуациях можно переустановить глубину цвета на большую, обработка подредактирована с учетом этого, попробуйте, если будут еще ошибки, просьба сообщать.
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    104544    98    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    4388    6    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    5341    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    8235    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

Управляемые формы уже давно и плотно вошли в жизнь 1С-разработчика. Однако, судя по недавним публикациям на Инфостарте, многие до сих пор мало знакомы с ними. Предлагаю разобраться с тем, что же это такое.

26.08.2013    269981    Evil Beaver    271    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    29517    3    CheBurator    63