Самый простой способ борьбы с лишним весом
Работаем, работаем, записываем графические файлы в базу и вдруг бац. База неотвратимо приближается к терабайту. И все из-за них.
В борьбе за байты, наверное, подойдут любые методы, даже широко известные Com объекты от Майкрософт, как: “WIA.ImageFile" и “WIA.ImageProcess”. Они просты и доступны с Windows XP pac. 2. То есть целую вечность. Но, увы, работают с диском и не могут перезаписать исходный файл
Что эта парочка умеет. Обрезать, изменять размер, поворачивать, конвертировать, сжимать и наклеивать другое изображение. То есть практически все.
Самый простой способ борьбы с лишними байтами это сконвертировать тяжелые файлы. То есть Формат BMP можно смело конвертировать, не забивая себе голову. Как минимум мегабайт экономии
Создаем объекты
ImageProcess = новый COMОбъект("WIA.ImageProcess");
ImageFile = новый COMОбъект("WIA.ImageFile");
Форматы
wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}";
wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}";
Ну и собственно, конвертация
ImageFile.LoadFile(ПутьКФайлу);
НомерПараметра = 0; //Фильтр Convert должен применятся быть последним
Если ImageFile.FormatID = wiaFormatBMP Тогда
Filter = ImageProcess.FilterInfos("Convert").FilterID ;
ImageProcess.Filters.Add(Filter);
ImageProcess.Filters(НомерПараметра).Properties("FormatID").Value = wiaFormatJPEG;
//Сжатие изображения, если требуется (
ImageProcess.Filters(НомерПараметра).Properties("Quality").Value = 5;
//)
newImageFile = ImageProcess.Apply(ImageFile);
ИмяНовогоФайла = ПолучитьИмяВременногоФайла(newImageFile.FileExtension);
newImageFile.SaveFile(ИмяНовогоФайла);
КонецЕсли;
Распознавание текста.
Бывает очень нужно, а Файн ридера нет.
"MODI.Document" в помощь. Доступная бесплатная библиотека от MS. Вполне себе сносно распознает текст. Правда только TIFF. Но мы то уже умеем конвертировать форматы. Вместо JPEG формата применяем TIFF формат
Document = Новый ComObject ("MODI.Document");
Document.Create(ИмяФайлаДляРаспознания);
Document.OCR(25); //25 это Русский
Result = Document.Images.item(0).Layout.Text;
Document.Close();
ТД = Новый ТекстовыйДокумент;
ТД.УстановитьТекст(Result);
ТД.Показать();
Скачать библиотеку MODI.Document" можно с дистрибутивом SharePoint Designer 2007. Не нужен SharePoint, так установите только Microsoft Office Document Imaging. Инструкция установки MODI с сайта поддержки майкрософт
В прилагаемой обработке пример работы с изображением. Коды форматов для WIA.ImageProcess и коды языков для MODI.Document.
Тестировалось на платформе 8.3.10 управляемое приложение. У пользователя было отключена Защита от опасных действий.