Feat: Генерация thumbnail для обложек курсов

 Intervention Image установлен
 generateThumbnail() - создаёт копию 400x300px с crop по центру
 deleteThumbnails() - удаляет оригинал и thumb
 Обновлены store, update, destroy методы
 View используют оригиналы для show, thumb для списка

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mirivlad
2026-03-26 12:39:10 +08:00
co-authored by Qwen-Coder
parent 65cb891658
commit b3d1daeea6
5 changed files with 172 additions and 7 deletions
@@ -43,7 +43,7 @@
<div class="col-md-4 mb-4">
<div class="card h-100 shadow-sm">
@if($course->thumbnail)
<img src="{{ asset('storage/' . $course->thumbnail) }}" class="card-img-top" alt="{{ $course->title }}" style="height:200px;object-fit:cover;">
<img src="{{ asset('storage/' . str_replace('_thumb.', '.', $course->thumbnail)) }}" class="card-img-top" alt="{{ $course->title }}" style="height:200px;object-fit:cover;">
@else
<div class="card-img-top bg-secondary d-flex align-items-center justify-content-center" style="height:200px;"><i class="bi bi-book text-white" style="font-size:4rem;"></i></div>
@endif
+1 -1
View File
@@ -15,7 +15,7 @@
<div class="row">
<div class="col-md-4 mb-4">
<div class="card shadow-sm">
@if($course->thumbnail)<img src="{{ asset('storage/' . $course->thumbnail) }}" class="card-img-top" alt="{{ $course->title }}">
@if($course->thumbnail)<img src="{{ asset('storage/' . str_replace('_thumb.', '.', $course->thumbnail)) }}" class="card-img-top" alt="{{ $course->title }}">
@else<div class="card-img-top bg-secondary d-flex align-items-center justify-content-center" style="height:200px;"><i class="bi bi-book text-white" style="font-size:4rem;"></i></div>@endif
</div>
</div>