V82Jpeg
Внешняя компонента для 1С:Предприятия
Внешняя компонента V82Jpeg предназначена для предварительного сжатия больших изображений, перед помещением их в базу данных 1С:Предприятия, выполнения простейших операций с ними (повороты, отражения), чтения информации из заголовков стандартных графических форматов (данные exif) и некоторых операций редактирования. Компонента выполнена по технологии NativeAPI и не требует отдельной административной установки. Компонента работает на платформе Windows с 1С:Предприятием начиная с версии 8.2. Рекомендуется использовать комненту V82Jpeg на сервере 1С:Предприятия, но 32-х разрядная версия может также работать на тонком или толстом клиенте.
Демонстрационную версию компоненты с примером ее использования можно получить здесь. Демо версия позволяет работать только с изображениями размером не более 640x480 пикселей, некоторые операции прерываются случайным образом.
ИСПОЛЬЗОВАНИЕ
Компонента подключается к 1С:Предприятию стандартным методом ПодключитьВнешнююКомпоненту. Для использования свойств и методов необходимо создать объект компоненты с именем Image. Например, ОбъектКомпоненты = Новый("AddIn.<Имя>.Image"), где Имя - параметр метода ПодключитьВнешнююКомпоненту.
Перед началом работы с картинкой ее необходимо загрузить, установив свойство ФайлКартинки либо СтрокаКартинки. Все прочие свойства и методы будут возвращать пустые или нулевые значения, если картинка предварительно не указана. Изображение доступно для обработки, пока доступна переменная объекта компоненты. Если память, занимаемую картинкой, необходимо освободить принудительно, можно присвоить этим свойствам значение Неопределено.
Компонента содержит несколько методов редактирования для регулировки цветового баланса, яркости/контраста, устранения эффекта красных глаз. Следует отметить, что идеология работы 1С:Предприятия 8.3 в клиент/серверном варианте не приспособлена для интерактивного редактирования изображений, так как требует постоянного трафика между клиентом и сервером. Поэтому использовать эти методы следует осмотрительно, стараться давать пользователю просмотр результата на эскизе или сжатом изображении.
Ошибки, возникающие в процессе работы компоненты, не вызывают исключений в среде 1С:Предприятия. Для получения информации о том, успешно ли был выполнен вызов последнего метода или свойства, необходимо получить свойство БылаОшибка и вызвать метод ОписаниеПоследнейОшибки для текстовой информации о ней. При возникновении некоторых ошибок, изображение может выгружаться. Для определния, нужна ли повторная загрузка изображения, используйте свойство КартинкаУстановлена. Некоторые методы возвращают булево значение, при этом Ложь сигнализирует об ошибке.
Свойства
ФайлКартинки (ImageFile) - только для записи, строка. Свойство содержит путь к файлу картинки для загрузки и последующей обработки. При использовании компоненты на сервере, файл должен быть виден и доступен на чтение из под учетной записи сервера предприятия. В общем случае, после выбора файла на клиенте, его следует передать на сервер как двоичные данные, сохранить во временный файл и его путь передать в компоненту. Графическая подсистема Windows часто оптимизирует операции для больших изображений, не загружая полностью файл в оперативную память. Для своевременного освобождения файла изображения с целью его последующего удаления, рекомендуется по окончании работы присваивать этому свойству значение Неопределено.
СтрокаКартинки (ImageString) - только для записи, строка. Позволяет установить рабочую картинку, передав ее в строке в формате Base64. Для больших изображений предпочтитеней загружать изображения через файл, т.к. кодирование и раскодирование в формат base64 занимет дополнительное время и объем памяти возрастает.
ФорматКартинки (ImageFormat) - чтение и запись, строка. Определяет в каком графическом формате изображение будет сохраняться (методами Сохранить, ДвоичныеДанные и Эскиз). Допустимы следующие значения свойства: jpeg, png, tiff, bmp, gif. По умолчанию используется jpeg-формат.
БылаОшибка (IsLastError) - только чтение, булево. Свойство устанавливается в Истину, если последний вызов окончился неудачно.
КартинкаУстановлена (IsImageSet) - только чтение, булево. Свойство равно Истина, если в памяти компоненты есть изображение.
Ширина (Width) - только чтение, целое число. Ширина изображения в пикселях.
Высота (Height) - только чтение, целое число. Высота изображения в пикселях.
Методы
Сохранить (Save) - сохраняет изображение в файл в формате, заданном свойством ФорматКартинки.
Параметры:
Возвращаемое значение: булево, если произошла ошибка равно Ложь
ДвоичныеДанные (BinaryData) - возвращает двоичные данные картинки в формате, заданном свойством ФорматКартинки.
Возвращаемое значение: объект двоичные данные или Неопределено.
ОписаниеПоследенейОшибки (LastErrorDescription) - возвращает текст описания ошибки, случившейся при последнем вызове, или пустую строку.
Эскиз (Thumbnail) - возращает двоичные данные эскиза загруженного изображения или Неопределено при ошибке.
Параметры:
Если параметры не заданы, размер эскиза определяется системой
АтрибутEXIF (EXIFAttribute) - возвращает строковое представление атрибута EXIF (спецификацию см. http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf). Действуют следующие правила преобразования:
Параметры:
Возвращаемое значение: строка со значением атрибура или двоичные данные или Неопределено, если атрибут не найден
Трансформировать (Transform) - метод преобразует изображение согласно заданным параметрам. Для выполнения поворотов и отражений используется неявное преобразование в jpeg-формат. Для пропорционального изменения размеров, можно установить только один из параметров - длину или ширину. В этом случае изменение второй размер изображения будет рассчитан автоматически.
Параметры:
КорректировкаЯркостиКонтраста (BrightnessContrastCorrection) - изменяет яркость и контраст согласно переданным параметрам.
Параметры:
Возвращаемое значение: булево Истина, если редактирование выполнено успешно.
Если оба параметра не заданы или равны 0 метод ничего не делает.
КорректировкаЦветовогоБаланса (ColorBalanceCorrection) - изменяет цветовой баланс изображения (в RGB шкале).
Параметры:
Возвращаемое значение: булево Истина, если редактирование выполнено успешно.
Если параметры не заданы или равны 0 метод ничего не делает.
КорректировкаКрасныхГлаз (RedEyeCorrection) - устраняет эффект красных глаз на фотографиях
Возвращаемое значение: булево Истина, если редактирование выполнено успешно.
СделатьЧерноБелым (MakeGrayScale) - делает изображение черно-белым
Возвращаемое значение: булево Истина, если редактирование выполнено успешно.
Обрезать (Crop) - обрезает картинку
Параметры:
Возвращаемое значение: булево Истина, если редактирование выполнено успешно.
Если параметры некорректны или несоответствуют один другому (например лево больше ширины картинки или право+лево больше ширины и.т.п.), никакое действие не выполняется