Вторая по частоте future-функция, которую я использовал, это абсолютный импорт
from __future__ import absolute_import
Что она делает?
Изменения, которые вносит эта инъекция описаны в PEP328
Покажу простой пример.
Допустим, есть такой пакет:
/my_package
/__init__.py
/main.py
/string.py
Смотрим код в my_package/main.py
# main.py
import string
Простой пример готов) Вопрос в том, какой модуль импортируется в данном случае? Есть два варианта:
1. модуль в моём пакете my_package.string
2. стандартный модуль string
И вот тут вступает в дело приоритет импортов. В Python2 порядок следующий: помимо иных источников, раньше ищется модуль внутри текущего пакета, а потом в стандартных библиотеках. Таким образом мы импортнём my_package.string.
Но в Python3 это поведение изменилось. Если мы указываем просто имя пакета, то ищется именно такой модуль, игнорируя имена в текущем пакете. Если мы хотим импортнуть именно подмодуль из нашего пакета то, мы должны теперь явно это указывать.
from my_package import string
или относительный импорт, но с указанием пути относительно текущего модуля main
from . import string
Еще одной неоднозначностью меньше 😎
Подробней про импорты здесь:
https://docs.python.org/3/tutorial/modules.html
#2to3#pep#basic
💡HDR. В чем преимущества и как использовать на Android
Чем отличается HDR (High Dynamic Range) видео или фото от обычного или SDR (Standard Dynamic Range)? Дисплей устройства становится ярче и насыщеннее. В этом и есть задача HDR - обеспечить больше информации о цвете и яркости картинки, чтобы передать максимально близко к задумке автора контента.
SDR формат с которым мы живем довольно давно и он разрабатывался из расчет на устройства того времени, которые просто не могли передать параметры выше:
- максимальная яркость ~100 нит
- ограниченная цветовая палитра (sRGB)
- светлое не такое уж светлое, а тёмное — просто чёрная клякса
Современные дисплее смартфонов имеют пиковую яркость в несколько тысяч нит, большие возможности по показу разных цветов и скорость отображения, поэтому SDR просто не может раскрыть их возможностей. Для этого сделали HDR и он позволяет раскрыть максимум от экрана устройства.
В Android 14 начали активную поддержку HDR контента и его его совместимость с устройствами без поддержки формата, а именно добавили возможности:
✅ показывать HDR-видео в SurfaceView и MediaCodec
✅ накладывать поверх яркий, живой интерфейс — тоже в HDR
✅ узнать через API, поддерживает ли устройство HDR
✅ использовать ImageDecoder для работы с HDR-изображениями
✅ автоматически конвертировать HDR в SDR контент
Google внедрила поддержку UltraHDR - формат изображений c HDR. В нем могут снимать современные Android устройства и получать больше эмоций от ваших фото. Каждый раз наслаждаюсь этим на Pixel.
В блоге Android Developers вышла статья с подробностями как устроен цвет на цифровых устройствах и какие преимущества даёт HDR
#android#hdr
🤖Важность HDR в приложениях для передачи естественных цветов
Почитал интересную статью от Google про важность использования HDR. Самое важное - HRD не только про яркость, а именно про правильность передачи цветов в приложениях, особенно когда дело касается фото.
В Android 15 появилось API для контроля того смешивания HDR и SDR контента:
// Требуется, чтобы Windows учитывало желаемый HDR headroom.
// Обратите внимание, что эквивалентный API в SurfaceView НЕ требует
// COLOR_MODE_HDR для ограничения headroom,
// если на SurfaceView отображается HDR-контент.
window.colorMode = ActivityInfo.COLOR_MODE_HDR
// разные значения headroom могут
// использоваться в зависимости от
// желаемого headroom контента
// И особенностей UI-дизайна приложения.
window.desiredHdrHeadroom = when {
/* только SDR */ -> 0f
/* Смешанный, в основном SDR */ -> 1.5f
/* Смешанный, в основном HDR */ -> 3f
/* только HDR */ -> 5f
else -> 0f
}
#android#hdr#android15