10

当我上传大图像 (4.2 MB) 干预图像抛出 500 错误...

private function resizeImage($path, $imgName){
    $sizes = getimagesize($path.$imgName);
    if($sizes[0] > $sizes[1]){
        ImageManagerStatic::make($path.$imgName)->fit(920,474)->insert(public_path() . "/uploads/applications/watermark.png",'bottom-right', 30, 30)->save($path."1_".$imgName);
    }else{
        ImageManagerStatic::make($path.$imgName)->heighten(474)->insert(public_path() . "/uploads/applications/watermark.png",'bottom-right', 30, 30)->save($path."1_".$imgName);
    }
    ImageManagerStatic::make($path.$imgName)->fit(440,226)->save($path."2_".$imgName);
    File::delete($path.$imgName);
}

它适用于较小的文件。upload_max_filesize=10M. 当我评论此功能时,它可以工作:/

4

5 回答 5

18

我有同样的问题,增加upload_max_filesize是不够的。我还增加memory_limit to 256M并重新启动了服务器。然后图像与干预一起工作。[以上更改在 php.ini 文件中]

您可能需要根据您使用的文件容量upload_max_filesize进行更改。memory_limit

于 2016-04-22T09:02:14.010 回答
8

今天我在 Laravel 5.5 中遇到了同样的问题,同时使用干预包在下面的代码中调整图像大小:

Image::make($image_tmp)->save($image_path);

我无权访问服务器中的php.ini文件,并且服务器需要时间进行更新,因此在我的 Controller 文件中暂时增加了函数本身的内存限制,如下所示:

在 ImagesController.php 文件中:-

public function addImage(Request $request){

    // Temporarily increase memory limit to 256MB
    ini_set('memory_limit','256M');

    $extension = Input::file('image')->getClientOriginalExtension();
    $fileName = rand(111,99999).'.'.$extension;
    $image_path = 'images/'.$fileName;
    $image_tmp = Input::file('image');
    Image::make($image_tmp)->resize(1182, 1506)->save($image_path);
}

希望它将来对某人有所帮助!

于 2018-03-29T07:37:46.853 回答
6

我对 Laravel 5.1 和 Intervention Image 库有同样的问题。就我而言,问题来自 Image::make($file) 行而不是上传部分。

我尝试更改以下值:

  • upload_max_filesize 从 2M 到 32M
  • post_max_size 从 2M 到 32M

对我收到的错误不做任何更改。

所以我增加:

  • memory_limit 为 256M

它解决了我的问题。我的假设是,即使我的图像大约是 6Mo,图像库也需要大量内存才能使用它。

于 2016-06-01T15:55:46.303 回答
4

编辑你的 php.ini:

upload_max_filesize = 40M

post_max_size = 40M

也许您的 post_max_size 小于 4MB。然后重启服务器。

于 2015-12-31T09:29:22.870 回答
1

我尝试了所有解决方案,但我忘记使用 Image 写入我的文件;这有效。

于 2020-09-19T06:49:48.060 回答