]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
fix: upload фото — нативный GD вместо Imagine для thumbnail
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 3 Jun 2026 10:30:01 +0000 (13:30 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 3 Jun 2026 10:30:01 +0000 (13:30 +0300)
Imagine/GD без libjpeg не может сохранять JPEG.
Используем imagecreatefromjpeg/png/webp + imagescale + imagejpeg
(как в FileService::uploadAvatar). Fallback: если GD не открыл файл —
превью = оригинал.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
erp24/controllers/CityStoreManagementController.php

index 6932252c04cd547e7e7b8c118b85d27e3601ab9d..366be78b81c52342c19491c9846b45a64676363d 100644 (file)
@@ -16,7 +16,6 @@ use yii_app\records\StoreDynamic;
 use yii_app\records\AssortmentLabel;
 use yii_app\records\StoreType;
 use yii\web\UploadedFile;
-use yii_app\helpers\ImageHelper;
 
 class CityStoreManagementController extends Controller
 {
@@ -433,11 +432,26 @@ class CityStoreManagementController extends Controller
         $smFile  = $dir . $base . '_sm.jpg';
 
         $file->saveAs($bigFile);
-        ImageHelper::resizeImage($bigFile, $smFile, 300, 200, 85);
 
         $urlDir = '/uploads/' . $adminId . '/' . $dateDir . '/';
         $bigUrl = $urlDir . $base . '_big.' . $ext;
-        $smUrl  = $urlDir . $base . '_sm.jpg';
+
+        // 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;
+        }
 
         $store->image_big = $bigUrl;
         $store->image_sm  = $smUrl;