Возвращает плотность изображения по горизонтали - число точек на дюйм (DPI). Важно! Если формат картинки не предоставляет эту информацию, то будет возвращена стандартная плотность, равная 72 точкам на дюйм (разрешение экрана).
Синтаксис
ПлотностьПоГоризонтали()Полное описание, параметры и ограничения
Картинка.ПлотностьПоГоризонтали (Picture.HorizontalDensity)
Картинка (Picture)
ПлотностьПоГоризонтали (HorizontalDensity)
Доступен, начиная с версии 8.3.14.
Синтаксис:
ПлотностьПоГоризонтали()
Возвращаемое значение:
Тип: Число, Неопределено.
Если картинка создана с вариантами, то возвращает информацию по текущему варианту.
Если картинка является частью коллекции картинок, возвращает Неопределено.
На мобильной платформе и мобильных клиентах всегда возвращает Неопределено.
Описание:
Возвращает плотность изображения по горизонтали - число точек на дюйм (DPI).
Важно! Если формат картинки не предоставляет эту информацию, то будет возвращена стандартная плотность, равная 72 точкам на дюйм (разрешение экрана).
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
См. также:
Картинка, метод ПлотностьПоВертикали
Использование в версии:
Доступен, начиная с версии 8.3.14.
Методическая информация
Практические примеры
Задать плотность PNG и отличить DPI от пиксельного размера
УстановитьПлотность меняет метаданные физического размера. Пиксельные 80×40 остаются прежними; допускается округление плотности при записи 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 пикселей";
КонецЕсли;
ИсходнаяГоризонталь = Исходная.ПлотностьПоГоризонтали();
ИсходнаяВертикаль = Исходная.ПлотностьПоВертикали();
Обработка = Новый ОбрабатываемаяКартинка(Исходная);
Обработка.УстановитьФормат(ФорматКартинки.PNG);
Обработка.УстановитьПлотность(300);
Первая = Обработка.ПолучитьКартинку();
Сообщить(Первая.ПлотностьПоГоризонтали() <> Неопределено);
Сообщить(ПлотностьБлизка(Первая.ПлотностьПоГоризонтали(), 300));
Сообщить(ПлотностьБлизка(Первая.ПлотностьПоВертикали(), 300));
Обработка.УстановитьПлотность(150, 300);
Вторая = Обработка.ПолучитьКартинку();
Сообщить(ПлотностьБлизка(Вторая.ПлотностьПоГоризонтали(), 150));
Сообщить(ПлотностьБлизка(Вторая.ПлотностьПоВертикали(), 300));
Сообщить(Вторая.Ширина() = 80 И Вторая.Высота() = 40);
Сообщить(Исходная.ПлотностьПоГоризонтали() = ИсходнаяГоризонталь);
Сообщить(Исходная.ПлотностьПоВертикали() = ИсходнаяВертикаль);
КонецПроцедуры
Функция ПлотностьБлизка(Фактическая, Ожидаемая)
Если Фактическая = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат Фактическая > Ожидаемая - 1 И Фактическая < Ожидаемая + 1;
КонецФункцииРазбор по шагам
Запомнить фактическую исходную плотность, не присваивать стандартное значение из предположения.
При одном параметре 300 вертикальная плотность берётся равной горизонтальной.
При двух параметрах задать 150 по горизонтали и 300 по вертикали; размеры в пикселях не менять.
Сравнивать плотность с допуском меньше 1 DPI из-за целочисленного представления единиц PNG.
Проверить, что исходная картинка сохранила свою первоначальную метаинформацию.
Как проверить результат
В настольном опыте восемь сообщений Истина. У второй копии 80×40, плотности примерно 150 и 300 DPI.
Горизонтальная и вертикальная плотности исходника равны значениям, сохранённым до обработки.
Ожидаемый результат
Изменена физическая интерпретация рисунка без увеличения разрешения в пикселях.
На что обратить внимание
Не во всех форматах плотность хранится: успешный вызов не всегда означает изменение метаинформации.
Не выполняйте арифметику с Неопределено для картинки коллекции или мобильной платформы. Здесь используется свой самостоятельный настольный PNG.
Это не настройка принтера и не масштаб элемента формы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.