php 如何压缩图像文件大小laravel

d7v8vwbk  于 2023-06-20  发布在  PHP
关注(0)|答案(3)|浏览(124)

我在AWS上的S3存储桶中有一些图像。我正试图获取图像并将其发送到我的Android应用程序(沿着来自我的数据库的其他信息)。我目前的设置工作正常,但我想减少图像文件的大小(目前约1-1.5MB)之前,我把它们发送到应用程序。
我试着用这个代码:

function compress($source, $destination, $quality) {

    $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;
}

$image_file = Storage::disk('s3_upload')->get("s3bucketpath");

$new_image_file = $this->replace_extension($image->filename, '.jpg');

$this->compress($image_file,$new_image_file, 50);

我明白

failed to open stream: No such file or directory in file

误差来自

$info = getimagesize($source);

我已经检查了文件路径,它在存储桶中并且存在,并且我已经var-dumped source并且得到了

�����JFIF���������C�$<'$!!$J58,<XM\[VMUSam�vag�hSUy�z������^t������������C$ $G''G�dUd�����������������������������������������������������@0"�����������������A�����!1A"Q2aq#B���3R�$4b�rC���%S���5D������������������#�����!1A2"Q#�����?���HS-�� ��� ��B�@�)��(  @������
@����!@��������������(�����(����� �
@����UF�LHU@�d ��
@ �����)������@R��B����(�R���E]��(

(� @B'...

做这件事的最好方法是什么。

bqf10yzr

bqf10yzr1#

尝试http://image.intervention.io/压缩文件。它简单而有效。
压片详情:http://image.intervention.io/api/encode
如何开始?简单地说:

// include composer autoload
require 'vendor/autoload.php';

// import the Intervention Image Manager Class
use Intervention\Image\ImageManager;

// create an image manager instance with favored driver
$manager = new ImageManager(array('driver' => 'imagick'));

// to finally create image instances
$image = $manager->make('public/foo.jpg')->resize(300, 200);
xnifntxz

xnifntxz2#

如果你真的很想压缩和调整图像大小,你可以使用像PNGQuant这样的库来压缩PNG compression,而不会损失质量,jpegoptim可以压缩jpeg图像。

相关问题