Помогите реализовать следующую проблему.
В карточке контрагентов создал новую вкладку "Логотип", куда я загружаю логотип контрагента.
как мне при нажатии на кнопку "Ок" уменьшить изображение до определенных размеров?
Это необходимо для того чтобы при формировании отчета (Word) кидать изображение в верхний колонтитул. Заранее спасибо
--
Ресайз - изменение размеров загружаемого изображения.
Нравится
Здравствуйте,
Предлагаю следующий вариант решения задачи:
Используем компонент Microsoft Office Web Components (OWC) 11.0 , по умолчанию он есть при установке Office 2007 (в предыдущих версиях офиса, отличается версией библиотеки).
В коде перед тем как записывать в датасет
dlData.Dataset.DataFields('Photo').LoadFromFile(FileName.Value);
сделаем resize изображения, которое мы получили в FileName, сохраним временно его на диске, запишем в темповый файл в датасет, далее удалим временный файл.
Сам resize сделаем с помощью функции :
function ResizeImage(FileName, OutFileName,OutFormat, Width, Height) { var Chs = new ActiveXObject("OWC11.ChartSpace"); var chConstants = Chs.Constants; Chs.Interior.SetTextured(FileName, chConstants.chStretchPlot, chConstants.chAllFaces); Chs.ExportPicture(OutFileName, OutFormat, Width, Height); // или вернуть изобращение как результат фунции // return Chs.GetPicture(OutFormat, Width, Height) }
Темповое имя для файла сформируем с помощью функций с scr_FileUtils, и запишем его на диск.
Пример работы (базоывй функционал, карточка Контакта, добавление фотографии, обработчик на кнопку Загрузить из файла ):
function btnPhotoLoadFromFileOnClick(Control) { var FileName = System.CreateObject('TSObjectLibrary.Value'); if (!(System.OpenDialog(FileName, '*.jpg|*.jpg', EmptyStr, EmptyStr, EmptyStr))) { return; } var tmppath = ExtractFilePath (FileName.Value) + 'tmp' + ExtractFileNameWithoutExtension(FileName.Value) + '.' + ExtractFileExtension(FileName.Value) ResizeImage(FileName.Value, tmppath,'jpg',300,300); dlData.Dataset.DataFields('Photo').LoadFromFile(tmppath); var fso = new ActiveXObject("Scripting.FileSystemObject"); var tmpfile = fso.GetFile(tmppath); tmpfile.Delete(); UpdatePhotoButtons(); }