Stitch отдаёт картинки урезанными без суффикса =s0
Без суффикса Google отдаёт s512 — 382x512 при показе 1425px. Суффикс =s0 возвращает натив Stitch, патч дописывает его перед скачиванием.
На демо все фото выглядели мыльно. Замерил: в файлах 512px при показе 1425px — запас x0.36. Причина оказалась в URL: картинки Stitch лежат на lh3.googleusercontent.com/aida-public/ и без суффикса отдаются урезанными до s512.
Что показал curl
Проверял причины через curl по URL картинки из stitch_/code.html с разными суффиксами.
'' или '=s512' → 382x512 (41 717 б) '=s1024' → 765x1024 '=s0' / '=s1600' / '=w2880' / '=w1440-h2000' → натив: 896x1200 / 1024x1024 / 1200x896 / 1376x768 (110–285 КБ)
Любой суффикс больше натива упирается в натив. Без суффикса Google отдаёт s512 по умолчанию — именно это и качалось. Суффикс =s0 отдаёт натив, и это не апскейл, а те же пиксели Stitch.
Патч
В scripts/stitch_localize.py функция native_url() дописывает =s0 перед скачиванием. Для уже скачанных ассетов есть scripts/refresh_assets_native.py.
- берём оригинальные URL из src/stitch_/code.html, не из local_code.html — там уже локальные пути;
- порядок имён как в stitch_localize.py: сначала img src, потом url(), list(dict.fromkeys) — имена img_01..img_NN совпадают с опубликованными, html править не надо;
- качаем через curl, при неудаче (не картинка) — через scripts/fetch_via_chrome.py (Chrome с куками);
- пропускаем .svg и файлы, у которых ширина уже >=1000 — идемпотентно.
python3 scripts/refresh_assets_native.py --glob '/tmp/quality/*'
То же для /tmp/portfolio/*. Результат по суммарной ширине: q1 x2.34, q3 x2.04, q4 x2.17, q5 x2.48, q6 x2.39.
Подводные камни
- путь к code.html бывает src/stitch_/code.html и src/stitch_24/24/code.html — искать '**/code.html' с 'stitch' в пути;
- браузерный замер naturalWidth после подмены файла врёт из-за кэша — Network.setCacheDisabled:True;
- на 1440px полноэкранный герой всё равно x0.97 (натив 1376 < 1425).
Читайте дальше
Новые замеры и статьи
Одно письмо, когда выходит новая статья или замер: разборы поломок, цифры цены и задержки, инструменты. Без рассылок «о нас» и без продаж. Отписаться можно ответом на любое письмо.