|
Как сделать превьюшку картинки? | ☑ | ||
|---|---|---|---|---|
|
0
WED
22.04.20
✎
13:15
|
по ТЗ требуется хранить к номенклатуре и ряду документов несколько картинок.
Поскольку картинки будут в хорошем разрешении (фото объекта,например), то и размер у каждого файла соответствующий - 10-12 Мб. Часть клиентов работают через интернет по слабому каналу (3G), поэтому требуется им сперва показать превьюшки, а полноразмерный файл качать на клиента только по необходимости. Есть ли способ в 1С сформировать превьюшку? |
|||
|
1
WED
22.04.20
✎
13:16
|
PS: Поиск вывел только на обработку на инфостарте, значит некий алгоритм возможен.
|
|||
|
2
Вафель
22.04.20
✎
13:20
|
Это называется resize
|
|||
|
3
Cyberhawk
22.04.20
✎
13:26
|
Храни сразу две картинки
|
|||
|
4
Cyberhawk
22.04.20
✎
13:27
|
Ну или генерируй маленькую на лету и ее передавай уже
|
|||
|
5
WED
22.04.20
✎
13:28
|
(2) ЗДравствуйте, Кэп. :)
(3,4) Вопрос как получить маленьку. Как хранить я в курсе :) |
|||
|
6
WED
22.04.20
✎
16:33
|
Ну, в общем, сам разобрался. Вот решение:
ДанныеКартинки - Двоичные данные исходной картинки. Функция ПолучитьПревьюКартинки(ДанныеКартинки) Экспорт Картинка = Новый Картинка(ДанныеКартинки, Истина); Размер = ДанныеКартинки.Размер(); МаксимальныйРазмер = 1024*300; //Превью делаем, только если размер исходной картинки больше 300Кб Если Размер > МаксимальныйРазмер Тогда ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Картинка); Попытка Если Картинка.ПлотностьПоВертикали() >= 150 Тогда ОбрабатываемаяКартинка.УстановитьПлотность(72, 72); КонецЕсли; Исключение КонецПопытки; //ОбрабатываемаяКартинка.Масштабировать(Макс(10,Окр(100*МаксимальныйРазмер/Размер))); Ширина = Картинка.Ширина(); МаксимальнаяШирина = 150; Если Ширина > МаксимальнаяШирина Тогда ОбрабатываемаяКартинка.УстановитьРазмер(МаксимальнаяШирина,Окр(Картинка.Высота()/Ширина*МаксимальнаяШирина)); КонецЕсли; Картинка = ОбрабатываемаяКартинка.ПолучитьКартинку(); КонецЕсли; Возврат Картинка.ПолучитьДвоичныеДанные(); КонецФункции За основу взял алгоритм от nsirotkin@mail.ru, за что ему большая благодарность. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |