ОбрабатываемаяКартинка.На основании массива картинок и формата

Конструкторы

Создает объект на основании массива картинок и указанного формата: Картинки используются в качестве кадров, собирается многокадровая картинка. Если в качестве элемента массива была добавлена многокадровая картинка, то каждый ее кадр будет добавлен в новую отдельно. Если формат не позволяет создать много кадровую каринку, то будет сделана однокадровая с первым кадром. Картинки используются в качестве кадров, собирается многокадровая картинка. Если в качестве элемента массива была добавлена многокадровая картинка, то каждый ее кадр будет добавлен в новую отдельно. Если формат не позволяет создать много кадровую каринку, то будет сделана однокадровая с первым кадром.

Синтаксис

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

ОбрабатываемаяКартинка.На основании массива картинок и формата

ОбрабатываемаяКартинка (ProcessingPicture)

На основании массива картинок и формата

Доступен, начиная с версии 8.3.15.

Синтаксис:
Новый ОбрабатываемаяКартинка(<Кадры>, <Формат>)
Параметры:

<Кадры> (необязательный)
Массив с картинками, которые станут кадрами новой картинки.

<Формат> (необязательный)
Формат будущей картинки.
Если не указан, то формат устанавливется по первому кадру.
Описание:

Создает объект на основании массива картинок и указанного формата:
Картинки используются в качестве кадров, собирается многокадровая картинка.

Если в качестве элемента массива была добавлена многокадровая картинка, то каждый ее кадр будет добавлен в новую отдельно.

Если формат не позволяет создать много кадровую каринку, то будет сделана однокадровая с первым кадром.
Картинки используются в качестве кадров, собирается многокадровая картинка.
Если в качестве элемента массива была добавлена многокадровая картинка, то каждый ее кадр будет добавлен в новую отдельно.
Если формат не позволяет создать много кадровую каринку, то будет сделана однокадровая с первым кадром.

Использование в версии:

Доступен, начиная с версии 8.3.15.

Методическая информация

Практические примеры

Собрать две свои картинки в TIFF и понять ограничение однокадрового PNG

Конструктор из массива использует картинки как кадры. TIFF поддерживает несколько кадров; PNG в этом опыте сохраняет только первый.

Где и как запускать

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

Подготовка

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

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

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

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

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

Процедура ВыполнитьПример() Экспорт
    Исходная = Новый Картинка(Base64Значение("iVBORw0KGgoAAAANSUhEUgAAAFAAAAAoCAIAAADmAupWAAAAX0lEQVR4nO3YURGAMAxEwYhAROUgu66KCIZmuO6bE5D9Ta3DqnVYwOkBpwecHnB6r8BzjJZ1gq97bh4wMDAwMDAwMDAwMDAwMDDw1+CzXjx/DDg94PSA0wNOr7oP2N0DKcWmInx+weoAAAAASUVORK5CYII="));
    Если Исходная.Ширина() <> 80 ИЛИ Исходная.Высота() <> 40 Тогда
        ВызватьИсключение "Собственный PNG должен быть 80 на 40 пикселей";
    КонецЕсли;
    Обрезка = Новый ОбрабатываемаяКартинка(Исходная);
    Обрезка.ВыделитьОбласть(20, 10, 40, 20);
    ВторойКадр = Обрезка.ПолучитьКартинку();
    Кадры = Новый Массив;
    Кадры.Добавить(Исходная);
    Кадры.Добавить(ВторойКадр);
    Многостраничная = Новый ОбрабатываемаяКартинка(Кадры, ФорматКартинки.TIFF);
    Страницы = Многостраничная.ПолучитьКартинки();
    Сообщить(Страницы.Количество() = 2);
    Для Каждого Страница Из Страницы Цикл
        Сообщить(ТипЗнч(Страница) = Тип("Картинка"));
    КонецЦикла;
    Однокадровая = Новый ОбрабатываемаяКартинка(Кадры, ФорматКартинки.PNG);
    Одна = Однокадровая.ПолучитьКартинки();
    Сообщить(Одна.Количество() = 1);
    Результат = Однокадровая.ПолучитьКартинку();
    Сообщить(Результат.КоличествоКадров() = 1);
    Сообщить(Результат.Ширина() = 80 И Результат.Высота() = 40);
    Сообщить(Кадры.Количество() = 2);
    Сообщить(Не Исходная.НаборВариантов);
КонецПроцедуры

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

  1. Вырезать второй собственный кадр 40×20 и составить массив из исходных 80×40 и этого кадра.

  2. Конструктору передать массив и TIFF, не Булево из другого варианта конструктора.

  3. ПолучитьКартинки возвращает массив результатов. Проверить два элемента типа Картинка.

  4. Повторить с PNG: формат не поддерживает этот многокадровый результат, берётся первый кадр.

  5. Сравнить количество кадров и НаборВариантов: варианты архивной картинки — не страницы TIFF.

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

  1. Восемь булевых сообщений Истина: у TIFF два результата, у PNG один первый кадр 80×40.

  2. Исходный массив всё ещё содержит две картинки.

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

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

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

  1. Не путайте ПолучитьКартинки с ПолучитьКартинку и не обходите одиночный Картинка как массив.

  2. Картинка с вариантами, анимированный формат и страницы TIFF имеют разные контракты.

  3. Для кадров, связанных с коллекцией, отдельные методы характеристик могут возвращать Неопределено; поэтому их размеры здесь не угадываются.

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

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

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

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

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