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