我在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'...
做这件事的最好方法是什么。
3条答案
按热度按时间bqf10yzr1#
尝试http://image.intervention.io/压缩文件。它简单而有效。
压片详情:http://image.intervention.io/api/encode
如何开始?简单地说:
xnifntxz2#
如果你真的很想压缩和调整图像大小,你可以使用像PNGQuant这样的库来压缩
PNG compression
,而不会损失质量,jpegoptim可以压缩jpeg
图像。vq8itlhq3#
查看此解决方案请
How to compress image before uploading in Laravel?
如果你不想先去这个页面,这里是建议的库
https://github.com/spatie/laravel-image-optimizer