Проблема:
Спустя некоторое непродолжительное время использования PortProtonQt перестаёт отображать карточки игр. Предположительно — из-за битых обложек в кэше Steam (~/.steam/steam/appcache/librarycache/). После очистки кэша проблема исчезает.
Ошибка в терминале:
ValueError: Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK
Трассировка указывает на _is_portrait_image() → PIL.Image.open() при обработке обложки.
Дополнительно:
Проверка кэша обложек через Krokiet выявила ~20 битых файлов с ошибкой:
Приложен архив с обложками и результатами анализа Krokiet (~110 МБ), а также вывод терминала при запуске и журнал PortProtonQt.
**ОС:** CachyOS Linux KDE
**PortProtonQt:** 1.4.0 (AUR)
**Проблема:**
Спустя некоторое непродолжительное время использования PortProtonQt перестаёт отображать карточки игр. Предположительно — из-за битых обложек в кэше Steam (`~/.steam/steam/appcache/librarycache/`). После очистки кэша проблема исчезает.
**Ошибка в терминале:**
```
ValueError: Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK
```
Трассировка указывает на `_is_portrait_image()` → `PIL.Image.open()` при обработке обложки.
**Дополнительно:**
Проверка кэша обложек через Krokiet выявила ~20 битых файлов с ошибкой:
> Format error decoding Jpeg: Error parsing image. Illegal start bytes: 8950
**Причины:**
- часть обложек скопирована из Windows (возможно, уже повреждены);
- одна битая обложка свежая (июнь) — возможно, повреждение при скачивании или записи.
**Предложение:**
В PortProtonQt добавить проверку целостности обложек и/или пропуск повреждённых файлов.
---
Приложен архив с обложками и результатами анализа Krokiet (~110 МБ), а также вывод терминала при запуске и журнал PortProtonQt.
Удалил кэш обложек через rm -rf ~/.steam/steam/appcache/librarycache/
Запустил PortProtonQt -> карточки игр и обложки отображаются
Закрыл PortProtonQt
Запустил Steam, через некоторое время он скачал обложки в ~/.steam/steam/appcache/librarycache/
Запустил PortProtonQt
Результат: обложки не отображаются, повторяется вывод в терминале, описанный выше.
DeepSeek вот такое говорит:
Похоже, вы столкнулись с ошибкой в PortProtonQt при попытке загрузить игры из Steam. Ошибка возникает при обработке PNG-изображений (вероятно, обложек игр), где библиотека Pillow (PIL) пытается распаковать слишком большой текстовый блок в PNG-файле.
ValueError: Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK
Причина: в одном из PNG-файлов текстовый блок zTXt превышает лимит Pillow (1 МБ).
Либо проблема глубже:
1. Закрыл Steam
2. Удалил кэш обложек через _rm -rf ~/.steam/steam/appcache/librarycache/_
3. Запустил PortProtonQt -> карточки игр и обложки отображаются
4. Закрыл PortProtonQt
5. Запустил Steam, через некоторое время он скачал обложки в ~/.steam/steam/appcache/librarycache/
6. Запустил PortProtonQt
**Результат:** обложки не отображаются, повторяется вывод в терминале, описанный выше.
DeepSeek вот такое говорит:
> Похоже, вы столкнулись с ошибкой в PortProtonQt при попытке загрузить игры из Steam. Ошибка возникает при обработке PNG-изображений (вероятно, обложек игр), где библиотека Pillow (PIL) пытается распаковать слишком большой текстовый блок в PNG-файле.
>
> `ValueError: Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK`
>
> Причина: в одном из PNG-файлов текстовый блок zTXt превышает лимит Pillow (1 МБ).
>
> **Решение: перед Image.open(path) добавить:**
>
> from PIL import PngImagePlugin
> PngImagePlugin.MAX_TEXT_CHUNK = 10 * 1024 * 1024
def _is_portrait_image(path: Path) -> bool:
"""Return True when image is taller than wide."""
try:
from PIL import PngImagePlugin
PngImagePlugin.MAX_TEXT_CHUNK = 50 * 1024 * 1024 # 50 МБ
with Image.open(path) as image:
width, height = image.size
except (OSError, UnidentifiedImageError) as e:
logger.debug("Failed to read Steam cover dimensions %s: %s", path, e)
return False
return height > width
DeepSeek предложил рабочее решение, которое сработало у меня:
- Открыть
`/usr/lib/python3.14/site-packages/portprotonqt/steam_api/utils.py`
- Найти строку
`with Image.open(path) as image:`
- Перед ней добавить:
```
from PIL import PngImagePlugin
PngImagePlugin.MAX_TEXT_CHUNK = 50 * 1024 * 1024 # 50 МБ
```
В результате должно получиться:
```
def _is_portrait_image(path: Path) -> bool:
"""Return True when image is taller than wide."""
try:
from PIL import PngImagePlugin
PngImagePlugin.MAX_TEXT_CHUNK = 50 * 1024 * 1024 # 50 МБ
with Image.open(path) as image:
width, height = image.size
except (OSError, UnidentifiedImageError) as e:
logger.debug("Failed to read Steam cover dimensions %s: %s", path, e)
return False
return height > width
```
adem
changed title from Библиотека не отображает карточки игр, если в кэше обложек Steam есть битые файлы to Библиотека не отображает карточки игр, если в кэше обложек Steam есть битые/большие файлы2026-08-26 01:28:13 +00:00
Видео, сначала показано поведение в пакете AppImage версии 1.4.1:
Подтверждаю исправление, использовал артефакт AppImage отсюда https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/actions/runs/3251
Видео, сначала показано поведение в пакете AppImage версии 1.4.1:
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
ОС: CachyOS Linux KDE
PortProtonQt: 1.4.0 (AUR)
Проблема:
Спустя некоторое непродолжительное время использования PortProtonQt перестаёт отображать карточки игр. Предположительно — из-за битых обложек в кэше Steam (
~/.steam/steam/appcache/librarycache/). После очистки кэша проблема исчезает.Ошибка в терминале:
Трассировка указывает на
_is_portrait_image()→PIL.Image.open()при обработке обложки.Дополнительно:
Проверка кэша обложек через Krokiet выявила ~20 битых файлов с ошибкой:
Причины:
Предложение:
В PortProtonQt добавить проверку целостности обложек и/или пропуск повреждённых файлов.
Приложен архив с обложками и результатами анализа Krokiet (~110 МБ), а также вывод терминала при запуске и журнал PortProtonQt.
Либо проблема глубже:
Результат: обложки не отображаются, повторяется вывод в терминале, описанный выше.
DeepSeek вот такое говорит:
DeepSeek предложил рабочее решение, которое сработало у меня:
/usr/lib/python3.14/site-packages/portprotonqt/steam_api/utils.pywith Image.open(path) as image:В результате должно получиться:
Библиотека не отображает карточки игр, если в кэше обложек Steam есть битые файлыto Библиотека не отображает карточки игр, если в кэше обложек Steam есть битые/большие файлыИсправил в
2d5336bc51, но оставлю ошибку открытой до 1.5Подтверждаю исправление, использовал артефакт AppImage отсюда https://git.linux-gaming.ru/Linux-Gaming/PortProtonQt/actions/runs/3251
Видео, сначала показано поведение в пакете AppImage версии 1.4.1:
Попало в 1.5.0