Работа с изображениями в 1С часто требует не только их отображения, но и анализа метаданных, зашитых в файл. Одним из наиболее частых запросов является получение параметра Orientation, чтобы корректно отображать фотографии, сделанные на мобильные устройства. Давайте разберем, как подступиться к этой задаче, используя различные инструменты.
Самый простой и «родной» для 1С способ — использование специализированных внешних обработок. Такие решения обычно базируются на библиотеках, умеющих парсить структуру JPEG-файла. Рассмотрим, как это реализовать на практике.
Для работы нам потребуется внешняя обработка, предназначенная для чтения метаданных. После подключения такой обработки в конфигурацию, процесс получения данных выглядит следующим образом:
// Инициализация обработки
Чтение = ВнешниеОбработки.Создать(ПутьКФайлуОбработки);
// Чтение данных из целевого файла
Чтение.ПрочитатьФайл(ПутьКФайлу);
// Доступ к конкретному свойству
ОриентацияСнимка = Чтение.Свойства.Orientation;
Этот метод удобен тем, что позволяет получать данные непосредственно в коде 1С без вызова сторонних программ. Однако важно помнить, что большинство подобных обработок созданы для чтения метаданных и могут не обладать встроенным функционалом для их записи или изменения.
Если задача стоит шире, например, необходимо не просто узнать ориентацию, но и изменить её, имеет смысл использовать проверенные временем консольные утилиты, такие как exiftool. Мы можем вызывать их прямо из 1С с помощью объекта ЗапускПриложения или КомандаСистемы.
Разберем логику взаимодействия:
cmd.Для более глубокой интеграции в среде Windows можно использовать встроенные компоненты: WIA (Windows Image Acquisition) или WIC (Windows Imaging Component). Это позволяет обращаться к свойствам файла через COM-интерфейс.
Преимущество этого подхода в том, что нам не нужно распространять вместе с конфигурацией дополнительные исполняемые файлы. Однако работа с COM-объектами требует понимания структуры System.Drawing или соответствующих классов .NET, если мы подключаем внешнюю сборку DLL.
Часто задача сводится к тому, чтобы картинка «просто правильно отображалась». В этом случае простого изменения тега Orientation может быть недостаточно, так как многие просмотрщики игнорируют метаданные, полагаясь только на порядок байтов в файле. Лучшим решением здесь будет физический поворот изображения.
Рекомендуем использовать библиотеку ImageMagick. Вызов команды mogrify -auto-orient из 1С позволяет:
Orientation в значение «1», чтобы другие программы не пытались повернуть изображение повторно.При реализации любого из предложенных методов, обратите внимание на следующие технические аспекты:
Права доступа: Если код выполняется на стороне сервера 1С, убедитесь, что учетная запись, от которой запущена служба 1C:Enterprise Server, имеет права на чтение и запись файлов в целевой директории, а также права на запуск внешних исполняемых файлов.
Целостность данных: При изменении метаданных (особенно при перезаписи тегов) всегда делайте резервную копию файла. Некорректная запись заголовка EXIF может привести к повреждению структуры файла JPEG, после чего изображение перестанет открываться.
Особенности отображения: Помните, что изменение метаданных — это не всегда то же самое, что изменение пикселей. Если ваша цель — гарантированное отображение картинки во всех браузерах и приложениях, лучше использовать инструменты для Lossless Rotation, которые выполняют трансформацию без пережатия данных изображения.
Проанализировав все способы, выберите тот, который лучше всего вписывается в архитектуру вашей системы. Для простого чтения достаточно внешней обработки, для полной автоматизации процесса «исправления» фото — вызов ImageMagick будет самым надежным вариантом.