Ресайзинг изображений

Помогите реализовать следующую проблему.
В карточке контрагентов создал новую вкладку "Логотип", куда я загружаю логотип контрагента.
как мне при нажатии на кнопку "Ок" уменьшить изображение до определенных размеров?
Это необходимо для того чтобы при формировании отчета (Word) кидать изображение в верхний колонтитул. Заранее спасибо

--
Ресайз - изменение размеров загружаемого изображения.

Нравится

1 комментарий

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

	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();
}
Показать все комментарии