Создает копию картинки и преобразовывает ее в заданный формат.
Синтаксис
Преобразовать(<ФорматКартинки>, <ВсеВарианты>, <ПодобратьВариант>)Полное описание, параметры и ограничения
Картинка.Преобразовать (Picture.Convert)
Картинка (Picture)
Преобразовать (Convert)
Не рекомендуется использовать, начиная с версии 8.3.14.
Доступен, начиная с версии 8.0.
Синтаксис:
Преобразовать(<ФорматКартинки>, <ВсеВарианты>, <ПодобратьВариант>)
Параметры:
<ФорматКартинки> (необязательный)
Тип: ФорматКартинки.
Определяет формат картинки.
<ВсеВарианты> (необязательный)
Тип: Булево.
Данный параметр используется, если картинка представлена архивом, содержащим варианты этой картинки. Если значение Ложь - будет преобразована одна картинка. Если значение Истина - все варианты картинки.
Значение по умолчанию: Ложь.
<ПодобратьВариант> (необязательный)
Тип: Соответствие, Неопределено.
Данный параметр используется только, если картинка представлена архивом, содержащим варианты этой картинки, и <ВсеВарианты> установлен в значение Ложь.
Пары "Ключ-Значение" соответствуют xml-тегам в манифесте вариантов картинки. Если параметры выбора варианта не заданы, будет выбран вариант по умолчанию. Если параметры указывают на несуществующий в архиве вариант, то будет возвращено Неопределено.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: Картинка, Неопределено.
Описание:
Создает копию картинки и преобразовывает ее в заданный формат.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Картинки растровых форматов и векторного формата SVG преобразовываются в форматы BMP и PNG.
Картинки других векторных форматов не преобразовываются.
Для многокадровых картинок (Icon и анимированный GIF) преобразуется первый кадр.
В мобильной версии платформы доступно преобразование только в форматы PNG и JPEG.
Использование в версии:
Доступен, начиная с версии 8.0.
Не рекомендуется использовать, начиная с версии 8.3.14.
Описание изменено в версии 8.3.22.
Методическая информация
Практические примеры
Получить фильтр PNG и разобрать старое Преобразовать на независимой BMP-копии
Клиентский урок не открывает файловый диалог и не пишет файл. Преобразовать показан как устаревающий метод для чтения существующего кода.
Где и как запускать
Полный клиентский обработчик команды собственной управляемой формы, настольный тонкий/толстый клиент Windows.
Подготовка
В отдельной своей конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеКартинки с флагом Сервер. Вставьте весь код одного урока и вызовите УчебныеКартинки.ВыполнитьПример() из серверной команды своей обработки.
Встроенный собственный PNG имеет 80×40 пикселей: белое поле, синий прямоугольник 40×20 с красной рамкой, начинающийся в точке 20,10. Фотографии, подписи, печати и документы пользователей не используются.
Картинки создаются из Base64 в памяти. Методы изменения меняют ОбрабатываемаяКартинка, а не исходный Картинка. ПолучитьКартинку создаёт отдельный результат; результаты не записываются на диск или в базу.
Основные уроки выполняйте на настольном сервере 1С 8.5.1.1343, не на мобильной платформе. Там другие ограничения форматов, метаданных цвета и плотности.
Последний урок — отдельный клиентский обработчик команды своей управляемой формы: он нужен для ФильтрИменФайлов и чтения устаревшего API, не для серверной обработки.
Для этого урока добавьте команду ПроверитьКартинку своей управляемой формы и назначьте ей одноимённый клиентский обработчик. Серверный общий модуль из других уроков не нужен.
&НаКлиенте
Процедура ПроверитьКартинку(Команда)
Исходная = Новый Картинка(Base64Значение("iVBORw0KGgoAAAANSUhEUgAAAFAAAAAoCAIAAADmAupWAAAAX0lEQVR4nO3YURGAMAxEwYhAROUgu66KCIZmuO6bE5D9Ta3DqnVYwOkBpwecHnB6r8BzjJZ1gq97bh4wMDAwMDAwMDAwMDAwMDDw1+CzXjx/DDg94PSA0wNOr7oP2N0DKcWmInx+weoAAAAASUVORK5CYII="));
Если Исходная.Ширина() <> 80 ИЛИ Исходная.Высота() <> 40 Тогда
ВызватьИсключение "Собственный PNG должен быть 80 на 40 пикселей";
КонецЕсли;
Фильтр = Исходная.ФильтрИменФайлов();
Сообщить(ТипЗнч(Фильтр) = Тип("Строка") И Не ПустаяСтрока(Фильтр));
Сообщить("Фильтр PNG: " + Фильтр);
ИсходныеБайты = Исходная.ПолучитьДвоичныеДанные();
Копия = Исходная.Преобразовать(ФорматКартинки.BMP);
Если Копия = Неопределено Тогда
ВызватьИсключение "Не получена BMP-копия собственного PNG";
КонецЕсли;
Сообщить(Копия.Формат() = ФорматКартинки.BMP);
Сообщить(Копия.Ширина() = 80 И Копия.Высота() = 40);
Сообщить(Исходная.Формат() = ФорматКартинки.PNG);
Сообщить(Base64Строка(Исходная.ПолучитьДвоичныеДанные()) = Base64Строка(ИсходныеБайты));
Сообщить(Исходная.РазмерФайла() > 0);
Сообщить(Копия.РазмерФайла() > 0);
КонецПроцедурыРазбор по шагам
ФильтрИменФайлов возвращает строку для возможного будущего диалога, но сам диалог не запускает.
ПолучитьДвоичныеДанные используется для сравнения исходных байтов до и после опыта.
Старый Преобразовать создаёт BMP-копию собственного PNG. Проверить Неопределено перед обращением к ней.
Сравнить размеры, форматы и байты исходника. РазмерФайла описывает размер представления, а не наличие файла на диске.
Для нового серверного кода выбирайте ОбрабатываемаяКартинка из предыдущих уроков.
Как проверить результат
Семь булевых сообщений Истина и фактическая строка фильтра PNG. BMP-копия 80×40, оригинал PNG не изменён.
Base64 двоичных данных исходника совпадает до и после опыта; диалог выбора файла не открывается.
Ожидаемый результат
Пример старого API имеет полный исходник, отдельный результат и явное указание современного варианта.
На что обратить внимание
ФильтрИменФайлов доступен тонкому/толстому клиенту, не серверу; этот урок не переносите в серверный модуль.
Не сравнивайте размер BMP и PNG по универсальному правилу: сжатие и содержимое влияют на результат.
Преобразовать не рекомендуется начиная с 8.3.14; метод приведён для изучения старого кода.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.