itube-specs 0.0.972 → 0.0.973
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -6,30 +6,32 @@ export interface ITestModelPortrait {
|
|
|
6
6
|
primaryImageSmallAvifUrl?: string;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
/** Модели из тестовой поставки нарезчика: `public/img/models/<guid>{,-640,-300}.{png,webp,avif}`. */
|
|
10
|
+
const PORTRAIT_GUIDS = [
|
|
11
|
+
'00003fff-0aa5-4e65-9356-7e01358408fe',
|
|
12
|
+
'0000cca2-8ec5-4c12-950f-4460920805b9',
|
|
13
|
+
'0002b6da-f82d-484a-aa0b-9a7f9ecb11da',
|
|
14
|
+
'00038fca-1453-40d8-8ace-66ea034c804e',
|
|
15
|
+
'0004202c-10a1-461b-9f80-e3c0fafdff04',
|
|
16
|
+
'0004c061-1393-42d0-8582-29952591129f',
|
|
17
|
+
'0006f78f-e668-4c35-9370-a936565780a4',
|
|
18
|
+
'0006fe81-996a-4ab3-b5b9-27285dd1c2cd',
|
|
19
|
+
'00072f5d-6068-4fa0-a22f-16b07d6f4e6b',
|
|
20
|
+
'000785cd-9500-4915-a7f4-836dda420f34',
|
|
21
|
+
];
|
|
10
22
|
|
|
11
23
|
/**
|
|
12
|
-
* Тестовые портреты
|
|
13
|
-
*
|
|
24
|
+
* Тестовые портреты моделей. `?img=png` отдаёт исходники 1024×1536 для сравнения, без
|
|
25
|
+
* параметра — нарезку по `DOCS/MODEL-IMAGES.md`: avif через `<picture>`, фолбэк webp.
|
|
14
26
|
*
|
|
15
|
-
* Две ширины, выбирает их КОМПОНЕНТ, а не браузер: srcset мы не ставим. 640w
|
|
16
|
-
* сетки, 300w
|
|
17
|
-
*
|
|
27
|
+
* Две ширины, выбирает их КОМПОНЕНТ, а не браузер: srcset мы не ставим. 640w — портрет в
|
|
28
|
+
* карточку сетки, 300w — квадратный кроп по лицу в круглые аватары, мини-карточки и подсказки
|
|
29
|
+
* поиска.
|
|
18
30
|
*
|
|
19
|
-
* Ступеней через srcset НЕ делаем.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* размазываются. Проверено на DPR1-мониторе: ладдер мылит, один файл нет.
|
|
24
|
-
*
|
|
25
|
-
* На мелкой ступени при разглядывании видна лёгкая разница с исходником, и это не брак
|
|
26
|
-
* генерации. Кажется, что при слоте 96px и файле 300w запас трёхкратный, но браузер уменьшает
|
|
27
|
-
* через мип-уровни делением пополам: реально показывается уровень 150, то есть уменьшение
|
|
28
|
-
* всего в 1.5 раза, и артефакты сжатия почти не размываются. Полностью лечится только отдачей
|
|
29
|
-
* туда полного 640w — на глаз идеально, но 27 KB на аватар 48–96px перебор, плюс Lighthouse
|
|
30
|
-
* справедливо ругается на такой перерасход. Осознанный размен.
|
|
31
|
-
*
|
|
32
|
-
* Кроп под 3:4 не делаем — обрезает `object-fit`. Почему именно так, см. `IModelImageUrls`.
|
|
31
|
+
* Ступеней через srcset НЕ делаем. Ступень мельче слота заведомо хуже полного файла: её портит
|
|
32
|
+
* двойной пересчёт (ресайз нарезчика плюс браузерный), а её артефакты показываются почти 1:1,
|
|
33
|
+
* тогда как 640w в слоте карточки ужимается в 2.6 раза и они размазываются. Проверено на
|
|
34
|
+
* DPR1-мониторе: ладдер мылит, один файл нет.
|
|
33
35
|
*
|
|
34
36
|
* Читается один раз на монтировании, поэтому переключение — перезагрузкой, а не навигацией
|
|
35
37
|
* по query. Для замера сети это и нужно: он честен только с чистого захода.
|
|
@@ -37,8 +39,8 @@ const PORTRAIT_COUNT = 16;
|
|
|
37
39
|
export function useTestModelImages() {
|
|
38
40
|
const isSource = useRoute().query['img'] === 'png';
|
|
39
41
|
|
|
40
|
-
const portraits: ITestModelPortrait[] =
|
|
41
|
-
const base = `/img/models
|
|
42
|
+
const portraits: ITestModelPortrait[] = PORTRAIT_GUIDS.map((guid) => {
|
|
43
|
+
const base = `/img/models/${guid}`;
|
|
42
44
|
|
|
43
45
|
if (isSource) {
|
|
44
46
|
return { primaryImageUrl: `${base}.png`, thumbUrl: `${base}.png` };
|