return ['success' => false, 'message' => 'Ошибка создания директории'];
}
- $base = 'store_' . $storeId . '_' . time();
+ $base = 'store_' . $storeId . '_' . time();
$bigFile = $dir . $base . '_big.' . $ext;
- $smFile = $dir . $base . '_sm.jpg';
$file->saveAs($bigFile);
$urlDir = '/uploads/' . $adminId . '/' . $dateDir . '/';
$bigUrl = $urlDir . $base . '_big.' . $ext;
-
- // Thumbnail через нативный GD (избегаем Imagine — может не иметь libjpeg)
- $srcImg = match ($ext) {
- 'png' => @imagecreatefrompng($bigFile),
- 'webp' => @imagecreatefromwebp($bigFile),
- default => @imagecreatefromjpeg($bigFile),
- };
-
- if ($srcImg !== false) {
- $thumb = imagescale($srcImg, 300, 200);
- imagejpeg($thumb, $smFile, 85);
- $smUrl = $urlDir . $base . '_sm.jpg';
- } else {
- // GD не смог открыть файл — используем оригинал как превью
- $smFile = $bigFile;
- $smUrl = $bigUrl;
+ $smUrl = $bigUrl; // fallback: превью = оригинал
+
+ // Thumbnail через GD, если расширение доступно
+ if (function_exists('imagejpeg') && function_exists('imagescale')) {
+ $srcImg = match ($ext) {
+ 'png' => function_exists('imagecreatefrompng') ? @imagecreatefrompng($bigFile) : false,
+ 'webp' => function_exists('imagecreatefromwebp') ? @imagecreatefromwebp($bigFile) : false,
+ default => function_exists('imagecreatefromjpeg') ? @imagecreatefromjpeg($bigFile) : false,
+ };
+
+ if ($srcImg !== false) {
+ $smPath = $dir . $base . '_sm.jpg';
+ imagejpeg(imagescale($srcImg, 300, 200), $smPath, 85);
+ $smUrl = $urlDir . $base . '_sm.jpg';
+ }
}
$store->image_big = $bigUrl;