首页 > 解决方案 > 当laravel使用图像干预调整图像大小时超出内存限制

问题描述

我为所有现有产品图像实现了图像调整大小方法。但它会给出这样的错误消息

production.ERROR:允许的内存大小为 134217728 字节已用尽(尝试分配 86736576 字节){“异常”:“[object](Symfony\Component\Debug\Exception\FatalErrorException(代码:1):允许的内存大小为 134217728 字节用尽(试图分配 86736576 字节)在 /home/httpd/htdocs/qa/ebeyonds_oos/api/vendor/intervention/image/src/Intervention/Image/AbstractDecoder.php:236)

存在从 aws s3 存储桶读取的保存图像并读取在图像调整大小过程中使用的内容。

foreach ($productImages 作为 $productImage) {

$imgArray = $productImage->images;
foreach ($imgArray as $img) {
    $filePathDetails = pathinfo($img->saved_name);
    log::info($img->saved_name);

    $fileName = $filePathDetails['basename'];

    if (isset($filePathDetails['extension'])) {
        $extension = ($filePathDetails['extension']);
    } else {
        $extension = $img->ext;
    }


    $fileNameFullPath = $ImageJob['client_id'] . $product_folder . '/' . $fileName;
    $imageExist = $disk->exists($fileNameFullPath);

    $imageExtensions = ['jpg', 'jpeg', 'png'];
    if ($imageExist) {
        if (in_array($extension, $imageExtensions)) {
            $OriginalImageContent = $disk->get($fileNameFullPath);
            if ($OriginalImageContent) {
                $im = imagecreatefromstring($OriginalImageContent);
                $originalWidth = imagesx($im) ?? null;
                $originalHeight = imagesy($im) ?? null;

                $listingImagePath = $ImageJob['client_id'] . $listingFolder . '/' . $fileName;
                $thumbImagePath = $ImageJob['client_id'] . $thumbnail_folder . '/' . $fileName; 
      
                if ($isSmallResize == 1) {
                    $this->imageResize($originalWidth, $originalHeight, $defaultSmallWidth, $defaultSmallHeight, $OriginalImageContent, $listingImagePath, $extension, $disk);
                }
                if ($isThumbResize == 1) {
                    $this->imageResize($originalWidth, $originalHeight, $defaultThumbWidth, $defaultThumbheight, $OriginalImageContent, $thumbImagePath, $extension, $disk);
                }
                Log::info("ProdcutHandler requestToResizeImage:: File Found");
            }
        } else {
            Log::info("ProdcutHandler requestToResizeImage:: invalid Extension");
        }
    } else {
        Log::info("ProdcutHandler requestToResizeImage:: File Not Found");
    }

有使用图像间隔的图像调整大小方法

请帮助解决这个问题。谢谢

标签: phplaravelamazon-s3image-resizing

解决方案


推荐阅读