Помогите реализовать следующую проблему.
В карточке контрагентов создал новую вкладку "Логотип", куда я загружаю логотип контрагента.
как мне при нажатии на кнопку "Ок" уменьшить изображение до определенных размеров?
Это необходимо для того чтобы при формировании отчета (Word) кидать изображение в верхний колонтитул. Заранее спасибо
--
Ресайз - изменение размеров загружаемого изображения.
Нравится
Здравствуйте,
Предлагаю следующий вариант решения задачи:
Используем компонент Microsoft Office Web Components (OWC) 11.0 , по умолчанию он есть при установке Office 2007 (в предыдущих версиях офиса, отличается версией библиотеки).

В коде перед тем как записывать в датасет
[javascript]
dlData.Dataset.DataFields('Photo').LoadFromFile(FileName.Value);
[/javascript]
сделаем resize изображения, которое мы получили в FileName, сохраним временно его на диске, запишем в темповый файл в датасет, далее удалим временный файл.
Сам resize сделаем с помощью функции :
[javascript]
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)
}
[/javascript]
Темповое имя для файла сформируем с помощью функций с scr_FileUtils, и запишем его на диск.
Пример работы (базоывй функционал, карточка Контакта, добавление фотографии, обработчик на кнопку Загрузить из файла ):
[javascript]
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();
}
[/javascript]