1

I want to save compressed image in laravel upload. I have found a package called "intervention/image". But it has resize functionality not compress.

Md. Robi Ullah
  • 1,703
  • 3
  • 20
  • 32
  • 1
    Does this answer your question? [Laravel image intervention compression](https://stackoverflow.com/questions/31531569/laravel-image-intervention-compression) – mrhn Nov 24 '19 at 23:06
  • You can try TinyPNG API – Harun Nov 25 '19 at 08:06

2 Answers2

0

You can simply make this:

  public function compress($source, $destination, $quality = 75) {
    $info = getimagesize($source);
    if ($info['mime'] == 'image/jpeg') {
      $image = imagecreatefromjpeg($source);
    } elseif ($info['mime'] == 'image/gif') {
      $image = imagecreatefromgif($source);
    } elseif ($info['mime'] == 'image/png') {
      $image = imagecreatefrompng($source);
    }
    imagejpeg($image, $destination, $quality);
    return $destination;
  }

The destination can be same the source

Vaunt
  • 106
  • 1
  • 7
0
      <form action="{{route('resizeImagePost')}}" method="POST" enctype="multipart/form-data">
      @csrf
      <div class="row">
            <div class="col-md-12">
                <br/>
                <input type="file" name="image" placeholder="image" class ="image">
            </div>
            <div class="col-md-12">
                <br/>
                <button type="submit" class="btn btn-success">Upload Image</button>
            </div>
        </div>
      </form>






   public function resizeImagePost(Request $request)
    {
        $this->validate($request, [
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
        $image = $request->file('image');
        $upload_imagename = time().'.'.$image->getClientOriginalExtension();
        $upload_url = public_path('/images').'/'.$upload_imagename;
        $filename = $this->compress_image($_FILES["image"]["tmp_name"], $upload_url, 40);
        return back()
            ->with('success','Image Upload successful');
    }

   public  function compress_image($source_url, $destination_url, $quality) {
        $info = getimagesize($source_url);
            if ($info['mime'] == 'image/jpeg')
                    $image = imagecreatefromjpeg($source_url);
            elseif ($info['mime'] == 'image/gif')
                    $image = imagecreatefromgif($source_url);
            elseif ($info['mime'] == 'image/png')
                    $image = imagecreatefrompng($source_url);
            imagejpeg($image, $destination_url, $quality);
        return $destination_url;
    }