по ТЗ требуется хранить к номенклатуре и ряду документов несколько картинок.
Поскольку картинки будут в хорошем разрешении (фото объекта,например), то и размер у каждого файла соответствующий - 10-12 Мб.
Часть клиентов работают через интернет по слабому каналу (3G), поэтому требуется им сперва показать превьюшки, а полноразмерный файл качать на клиента только по необходимости.
ДанныеКартинки - Двоичные данные исходной картинки.
Функция ПолучитьПревьюКартинки(ДанныеКартинки) Экспорт
Картинка = Новый Картинка(ДанныеКартинки, Истина);
Размер = ДанныеКартинки.Размер();
МаксимальныйРазмер = 1024*300; //Превью делаем, только если размер исходной картинки больше 300Кб
Если Размер > МаксимальныйРазмер Тогда
ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Картинка);
Попытка
Если Картинка.ПлотностьПоВертикали() >= 150 Тогда
ОбрабатываемаяКартинка.УстановитьПлотность(72, 72);
КонецЕсли;
Исключение
КонецПопытки;
//ОбрабатываемаяКартинка.Масштабировать(Макс(10,Окр(100*МаксимальныйРазмер/Размер)));
Ширина = Картинка.Ширина();
МаксимальнаяШирина = 150;
Если Ширина > МаксимальнаяШирина Тогда
ОбрабатываемаяКартинка.УстановитьРазмер(МаксимальнаяШирина,Окр(Картинка.Высота()/Ширина*МаксимальнаяШирина));
КонецЕсли;
Картинка = ОбрабатываемаяКартинка.ПолучитьКартинку();
КонецЕсли;
Возврат Картинка.ПолучитьДвоичныеДанные();
КонецФункции
За основу взял алгоритм от nsirotkin@mail.ru, за что ему большая благодарность.