保存文件大小后的Laravel干预/图像未更新

时间:2018-07-23 13:40:49

标签: laravel intervention

我正在使用一个简单的图像优化器工作,但是我有一个问题,我使用make打开图像,获取文件大小并给我正确的值,然后尝试使用其他名称保存并使用不同的质量,从而降低了直到文件大小小于100的质量一一对应。但是问题是文件大小永远不会改变:

if ($data['picture'][$key]['weight'] >= 100) {

   if (@copy(public_path() . '/photos/' . $images['path'], public_path() . '/photos/temp/'. $images['path'])) {

      $img = Image::make(public_path() . '/photos/temp/'. $images['path']);
      $height = $img->height();
      $width = $img->width();

      if ($height > 600) {
        $img->resize(null, 600, function ($constraint) {
           $constraint->aspectRatio();
           $constraint->upsize();
        });
      }

      $height = $img->height();
      $width = $img->width();

      if ($width > 800) {
        $img->resize(800, null, function ($constraint) {
           $constraint->aspectRatio();
           $constraint->upsize();
        });
      }

      $height = $img->height();
      $width = $img->width();

      $size = $img->filesize() / 1000;
      $quality = 100;

这时我得到了正确的文件大小,但是现在,如果我销毁了图像,然后再次使用make,则会损坏图像;如果再次简单地使用make进行打开,则图像也会损坏。然后,给我原始大小:

    while ($size > 100) {
      $img->save(public_path() . '/photos/temp/' . $images['path'])->encode('jpg', $quality)->filesize() / 1000;
      dump($img->filesize());
      if ($size <= 100) {
        break; 
      } else {
        $quality--;
      }

      if ($quality < 80) {
        $size = 100;
        break;
      }

    };

    $data['photos'][$key]['temporal'] = '/photos/temp' . $images['path'];
  }
}

0 个答案:

没有答案