media: кодеки для magick в образе и диагностика ресайза
Базовый пакет imagemagick в alpine идёт без кодеков, поэтому magick не мог прочитать jpeg-вложение и падал с "exit status 1". Ставим imagemagick-jpeg, -heic, -webp, -tiff. Чтобы такое было видно из логов: runMagick подставляет stderr в ошибку и отдельно ловит "код выхода 0, но пустой вывод" (так magick ведёт себя без кодека на запись), а веб логирует формат, размеры до и после, время скачивания и ресайза. Если ресайз всё же не удался, отдаём оригинал вместо 502; в кэш не кладём записи больше 4 МБ, чтобы неужатые оригиналы не съели память. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -267,9 +267,13 @@ func (b *Bot) downloadAndCompressImages(ctx context.Context, attachments []memos
|
||||
continue
|
||||
}
|
||||
|
||||
srcBytes := len(data)
|
||||
|
||||
data, filename, err := media.CompressImage(ctx, data, att.Filename)
|
||||
if err != nil {
|
||||
b.logger.Warn("failed to compress image, skipping", "name", att.Name, "error", err)
|
||||
b.logger.Warn("failed to compress image, skipping",
|
||||
"name", att.Name, "filename", att.Filename, "mime", att.Type,
|
||||
"src_bytes", srcBytes, "error", err)
|
||||
skipped = true
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user