Картинка.Преобразовать

Методы · Convert

Создает копию картинки и преобразовывает ее в заданный формат.

Синтаксис

Преобразовать(<ФорматКартинки>, <ВсеВарианты>, <ПодобратьВариант>)
Полное описание, параметры и ограничения

Картинка.Преобразовать (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.

Подготовка

  1. В отдельной своей конфигурации УчебнаяКонфигурацияСинтаксиса создайте серверный общий модуль УчебныеКартинки с флагом Сервер. Вставьте весь код одного урока и вызовите УчебныеКартинки.ВыполнитьПример() из серверной команды своей обработки.

  2. Встроенный собственный PNG имеет 80×40 пикселей: белое поле, синий прямоугольник 40×20 с красной рамкой, начинающийся в точке 20,10. Фотографии, подписи, печати и документы пользователей не используются.

  3. Картинки создаются из Base64 в памяти. Методы изменения меняют ОбрабатываемаяКартинка, а не исходный Картинка. ПолучитьКартинку создаёт отдельный результат; результаты не записываются на диск или в базу.

  4. Основные уроки выполняйте на настольном сервере 1С 8.5.1.1343, не на мобильной платформе. Там другие ограничения форматов, метаданных цвета и плотности.

  5. Последний урок — отдельный клиентский обработчик команды своей управляемой формы: он нужен для ФильтрИменФайлов и чтения устаревшего API, не для серверной обработки.

  6. Для этого урока добавьте команду ПроверитьКартинку своей управляемой формы и назначьте ей одноимённый клиентский обработчик. Серверный общий модуль из других уроков не нужен.

&НаКлиенте
Процедура ПроверитьКартинку(Команда)
    Исходная = Новый Картинка(Base64Значение("iVBORw0KGgoAAAANSUhEUgAAAFAAAAAoCAIAAADmAupWAAAAX0lEQVR4nO3YURGAMAxEwYhAROUgu66KCIZmuO6bE5D9Ta3DqnVYwOkBpwecHnB6r8BzjJZ1gq97bh4wMDAwMDAwMDAwMDAwMDDw1+CzXjx/DDg94PSA0wNOr7oP2N0DKcWmInx+weoAAAAASUVORK5CYII="));
    Если Исходная.Ширина() <> 80 ИЛИ Исходная.Высота() <> 40 Тогда
        ВызватьИсключение "Собственный PNG должен быть 80 на 40 пикселей";
    КонецЕсли;
    Фильтр = Исходная.ФильтрИменФайлов();
    Сообщить(ТипЗнч(Фильтр) = Тип("Строка") И Не ПустаяСтрока(Фильтр));
    Сообщить("Фильтр PNG: " + Фильтр);
    ИсходныеБайты = Исходная.ПолучитьДвоичныеДанные();
    Копия = Исходная.Преобразовать(ФорматКартинки.BMP);
    Если Копия = Неопределено Тогда
        ВызватьИсключение "Не получена BMP-копия собственного PNG";
    КонецЕсли;
    Сообщить(Копия.Формат() = ФорматКартинки.BMP);
    Сообщить(Копия.Ширина() = 80 И Копия.Высота() = 40);
    Сообщить(Исходная.Формат() = ФорматКартинки.PNG);
    Сообщить(Base64Строка(Исходная.ПолучитьДвоичныеДанные()) = Base64Строка(ИсходныеБайты));
    Сообщить(Исходная.РазмерФайла() > 0);
    Сообщить(Копия.РазмерФайла() > 0);
КонецПроцедуры

Разбор по шагам

  1. ФильтрИменФайлов возвращает строку для возможного будущего диалога, но сам диалог не запускает.

  2. ПолучитьДвоичныеДанные используется для сравнения исходных байтов до и после опыта.

  3. Старый Преобразовать создаёт BMP-копию собственного PNG. Проверить Неопределено перед обращением к ней.

  4. Сравнить размеры, форматы и байты исходника. РазмерФайла описывает размер представления, а не наличие файла на диске.

  5. Для нового серверного кода выбирайте ОбрабатываемаяКартинка из предыдущих уроков.

Как проверить результат

  1. Семь булевых сообщений Истина и фактическая строка фильтра PNG. BMP-копия 80×40, оригинал PNG не изменён.

  2. Base64 двоичных данных исходника совпадает до и после опыта; диалог выбора файла не открывается.

Ожидаемый результат

Пример старого API имеет полный исходник, отдельный результат и явное указание современного варианта.

На что обратить внимание

  1. ФильтрИменФайлов доступен тонкому/толстому клиенту, не серверу; этот урок не переносите в серверный модуль.

  2. Не сравнивайте размер BMP и PNG по универсальному правилу: сжатие и содержимое влияют на результат.

  3. Преобразовать не рекомендуется начиная с 8.3.14; метод приведён для изучения старого кода.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.