Ресайс изображений и вставка в макет

1. BARDER 25 21.07.22 10:36 Сейчас в теме
Привет всем!
У меня КА 2.4 обработкой создаю табличную часть и сохраняю в EXCEL(прайс лист с фото)
Проблема в том, что фотки в 1С по 1,5 МБ, позиций в прайсе 100 с лишним, и когда фото в макет вставляю, делаю масштаб под ячейку:
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайла(Выборка.ОсновноеИзображение);
            	АдресФотографии = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
           		Данные = ПолучитьИзВременногоХранилища(АдресФотографии);
            	ОблСтроки.Рисунки.Фото.Картинка = Новый Картинка(Данные);
            	ОблСтроки.Рисунки.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер

так вот файл весит 200 с лишним МБ, очень тяжелый.
Как мне уменьшить вес картинки средствам 1С на Сервере, так как у меня обработка работает в фоне по регламенту, база SQL, SQL сервер на линуксе, виндовые DLL не пойдут.
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Найденные решения
15. laperuz 47 21.07.22 11:37 Сейчас в теме +10 $m
(10)Так уменьшайте не в базе, а кодом
Вместо

ОблСтроки.Рисунки.Фото.Картинка = Новый Картинка(Данные);


Делайте

Картинка = Новый Картинка(Данные);
ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Картинка);
ОбрабатываемаяКартинка.Масштабировать(50);
МаленькаяКартинка = ОбрабатываемаяКартинка.ПолучитьКартинку();

ОблСтроки.Рисунки.Фото.Картинка = МаленькаяКартинка;


P.S. Коэффициент внутри Масштабировать() сами определите какой нужно, число больше 0, в процентах от размера первоначального.
Fruktoved; user1203706; independ; BARDER; papami; starik-2005; dabu-dabu; collider; +8 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
17. RustamZz 21.07.22 13:48 Сейчас в теме
(1)
При экспорте табличного документа в различные форматы реализована возможность управлять качеством картинок, которые размещены в экспортируемом табличном документе.
Для табличного документа реализовано свойство ПлотностьСохраняемыхКартинок. Для списка параметров вывода компоновки данных (тип ЗначенияПараметровВыводаКомпоновкиДанных) реализован параметр ПлотностьСохраняемыхКартинок. Реализован объект МакетДокументаОбластиКомпоновкиДанных.
в 8.3.22
2. -AI- 21.07.22 10:42 Сейчас в теме
а что мешает сделать батник который будет ресайзить картинки из одной папки в другую, тож по расписанию?

ну а 1С будет брать файлики уже из второй папки, а не из первой...
3. XAKEP 21.07.22 10:46 Сейчас в теме
(2)
Для преобразования форматов изображений в Linux используется утилита Convert от ImageMagick
6. -AI- 21.07.22 11:15 Сейчас в теме
(3) во времена, когда w31 (не w311) запускали только что бы пасьянс разложить,
помню была консольная утилита "picem.exe", удобная штука была...
для пакетной обработки картинок...

тогда многие удивлялись, как у меня получается картинки сжимать ("архивировать")
7. BARDER 25 21.07.22 11:17 Сейчас в теме
(2) у меня фотки беруться из Номенклатура.ФайлКартинки Основное изображение. запросом на сервере...
никак не могу достучаться до локального диска...
16. ishelper 21.07.22 11:40 Сейчас в теме
(7)
никак не могу достучаться до локального диска...
Ну, а если переделать решение из (5) чтобы оно не обращалось к файловой системе, а работало через ДвоичныеДанные? Наверняка ведь там чтение/запись файлов именно так производятся, не?
4. XAKEP 21.07.22 10:47 Сейчас в теме
convert -resize 50% image.png image.bmp # уменьшить вдвое
convert -resize 620x480 image.png image.bmp # размер в px
9. BARDER 25 21.07.22 11:18 Сейчас в теме
(4) (6) тут средствами 1С надо как то сделать, что бы не затрагивать других приложений
12. XAKEP 21.07.22 11:24 Сейчас в теме
(9)
а в языке 1с нет такой команды - запуск других приложений :) ?
или что-нибудь в этом роде ( запуск приложения по адресу ....)


а виртуалка - так себе вариант.
13. BARDER 25 21.07.22 11:26 Сейчас в теме
(12) Я решение прошу а не выяснения правильности трактовки...

А виртуалка не моя компетенция почему так сделали... у меня есть задача, я ищу решение... переделывать сервер никто не будет)
14. XAKEP 21.07.22 11:36 Сейчас в теме
5. papami 56 21.07.22 11:12 Сейчас в теме
8. XAKEP 21.07.22 11:17 Сейчас в теме
11. BARDER 25 21.07.22 11:20 Сейчас в теме
(8) да SQL который находиться на виртуалке)
18. papami 56 21.07.22 15:00 Сейчас в теме
(8) Там сама суть. Ниже подробно расписал, коллега.
10. BARDER 25 21.07.22 11:20 Сейчас в теме
(5) я сжать не могу, так как эти все фотки выгружаются на сайт 1С Битрикс а если уменьшать, то все фотки на сайте качество потеряют
15. laperuz 47 21.07.22 11:37 Сейчас в теме +10 $m
(10)Так уменьшайте не в базе, а кодом
Вместо

ОблСтроки.Рисунки.Фото.Картинка = Новый Картинка(Данные);


Делайте

Картинка = Новый Картинка(Данные);
ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Картинка);
ОбрабатываемаяКартинка.Масштабировать(50);
МаленькаяКартинка = ОбрабатываемаяКартинка.ПолучитьКартинку();

ОблСтроки.Рисунки.Фото.Картинка = МаленькаяКартинка;


P.S. Коэффициент внутри Масштабировать() сами определите какой нужно, число больше 0, в процентах от размера первоначального.
Fruktoved; user1203706; independ; BARDER; papami; starik-2005; dabu-dabu; collider; +8 Ответить
19. BARDER 25 21.07.22 21:10 Сейчас в теме
(15) Спасибо) то что нужно
Только когда фотка обычная не большая, она тоже уменьшается
20. laperuz 47 22.07.22 03:44 Сейчас в теме
(19)У картинки есть метод РазмерФайла(), возвращает размер в байтах, можно им проверять, и, если размер больше какого-то значения, масштабировать.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот