【问题标题】:Compress an image with rest api使用 rest api 压缩图像
【发布时间】:2019-01-31 00:29:30
【问题描述】:

这里有个大问题。我有 7000 个数据和图像要从我的 laravel 服务器端调用。并且图像文件大约 1mb 并且图像在本地资产 laravel 中。我没有问题显示图片和数据。但是执行起来需要很长时间和滞后。我尝试了很多建议,但没有给我解决方案。大家能不能帮帮我。对不起我的英语不好

注意:因为用户不想通过保存干预来复制图像。我在路线中放了一些代码。

Route::get('getpicture/{id}/{namefile}, function($id, $namefile){ $img = Image::make(public_path('img/'.$id.'/'.$namefile.''))->resize(80,80)->response('data-url'); 返回 $img; });

但它仍然滞后。我认为这是因为 1 个函数返回 1 个图像。

还有什么办法吗?

【问题讨论】:

  • 那么你到底尝试了什么?
  • 对于您的情况,在某些 Cloud DB 中包含图像看起来非常好。其他解决方案可以调整图像大小并使用类似的库向用户返回质量较低/较小的图像:image.intervention.io
  • 现在我正在使用干预。我输入了路线::get('getpicture/{public}/{id}/{name_file}',function($public, $id, $namefile){ $img = img::make(public_path('img/ '.$id.'/'.$namefile.'))->resize(300,200)->response('data-url'))}) 因为用户用户不想以相同的名称保存 2 张图片。我用这个。还有我的 img src="127.0.01:8000/getpicture{{content.id}}/{content.namefile}}"。而且加载图片需要很长时间。

标签: laravel typescript ionic3


【解决方案1】:

您不应该为每个请求即时调整图像的大小,因为它会消耗资源并且可能是导致长时间延迟的原因。

在上传时调整图片大小,或者至少在第一次请求时存储调整后的图片,这样每个后续请求都会更快,因为不必再次处理图片。

【讨论】:

  • 所以我必须创建一个函数来调用客户端的所有图像?或者在 laravel 服务器端创建另一个函数来压缩所有图像?
  • 在 laravel 端创建一个函数来压缩所有图像或保留当前设置但在调整大小后保存图像,并检查调整大小的图像是否存在:如果存在则提供调整大小的图像,如果不调整大小并保存它。这样它只会在第一个请求时调整大小。
  • 感谢卢卡斯的建议。我实际上通过干预将base64图像保存到数据库中。并在我想要的任何地方调用它。
  • 虽然将图像存储在数据库中可能看起来是一个很好的解决方案(更容易维护和备份),但它被认为是一种不好的做法。您应该将图像存储在磁盘上,并将路径存储在 db 中,使用 Laravel 非常简单,并且软件包可以提供帮助(例如:spatie/laravel-medialibrary)。
  • 是的,请求 APi 需要一些时间。 laravel medialibrary 表示所有图片都存储到我的 laravel 服务器本地?
猜你喜欢
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 2018-04-20
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多