Php 使用Cloudinary URL缩放图像的模型中的Larvel自定义属性
在我的web应用程序中,我使用Cloudinary进行图像存储。图像上传工作正常,但我想为图像创建一个自定义属性,以便在从数据库中获取图像url时对宽度和高度进行一些修改 图像的链接: 它存储在数据库中,但是当它从数据库中获取时,它应该具有一定的伸缩性,这样它就不会花费太多的时间来加载网站 以下是我的故事模型:Php 使用Cloudinary URL缩放图像的模型中的Larvel自定义属性,php,laravel,cloudinary,Php,Laravel,Cloudinary,在我的web应用程序中,我使用Cloudinary进行图像存储。图像上传工作正常,但我想为图像创建一个自定义属性,以便在从数据库中获取图像url时对宽度和高度进行一些修改 图像的链接: 它存储在数据库中,但是当它从数据库中获取时,它应该具有一定的伸缩性,这样它就不会花费太多的时间来加载网站 以下是我的故事模型: class Story extends Model { use Commentable, Searchable; /** * The attributes th
class Story extends Model
{
use Commentable, Searchable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'title',
'summary',
'content',
'created_at',
'story_statuses_id',
'image', 'language',
'likes',
'views',
'url_key',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'is_public' => 'boolean',
];
我不知道如何使用它,有人能帮忙吗?Cloudinary支持运行时图像大小调整 根据他们的文件而不是本 使用 如您所见,我在上传后添加了
/w\u 100、h\u 100、c\u fit/
,以指示Cloudinary动态调整大小
w
表示宽度,h
表示高度,c
表示裁剪时要使用的刻度类型
您可以找到文档
更新1
像这样的东西应该可以
$default_url = "https://res.cloudinary.com/wokong/image/upload/v1568570430/storyHeader/cxjir4g9tkaa8xepxodg.jpg";
$width = 100;
$height = 100;
echo str_replace("/upload", "/upload/w_".$width.",h_".$height.",c_fit", $default_url);
更新2
你的模型看起来像
class Story extends Model
{
use Commentable, Searchable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'title',
'summary',
'content',
'created_at',
'story_statuses_id',
'image', 'language',
'likes',
'views',
'url_key',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'is_public' => 'boolean',
];
public function getImageForWebAttribute()
{
$width = 100; // You can keep this info in app config
$height = 100;
// Here i am assuming `image` is where you store Cloudinary url
return str_replace("/upload", "/upload/w_".$width.",h_".$height.",c_fit", $this->image);
}
}
你可以这样称呼它
$story->image_for_web
可以找到laravel自定义突变子的文档您可以保存上传响应中返回的
公共id,而不是将上传图像的整个URL保存在数据库中。
然后,您可以使用Cloudinary的SDK为您生成转换url,方法是将所需的转换参数与图像的public\u id
一起传递给Cloudinary\u url()
Helper函数
例如,假设您要生成一个图像的URL,其public\u id
为sample
。此外,您希望根据客户端的设备和浏览器,以尽可能最佳的格式交付图像。您还希望使用Cloudinary的自动质量算法,将图像缩小到500px的宽度,同时保留其原始纵横比。
您可以使用以下代码来实现它:
$url = cloudinary_url('sample', array(
'fetch_format' => 'auto',
'quality' => 'auto',
'crop' => 'scale',
'width' => 500
));
echo$url代码>将打印以下内容:
http://res.cloudinary.com/<cloud_name>/image/upload/c_scale,f_auto,q_auto,w_500/sample
http://res.cloudinary.com//image/upload/c_scale,f_auto,q_auto,w_500/样本
如果希望使用SDK生成整个
标记,可以使用cl\u image\u tag()
作为cloudinary\u URL()
的仅URL输出的替代方法
下面是Cloudinary文档中的相关部分的链接,其中包含了一些关于如何使用cl\u image\u tag()
和Cloudinary\u url()
好的,这是对
例如,假设您从laravel中的控制器将$images附加到视图
您可以通过url动态生成固定的宽度和高度,并连接到引导网格系统
`
`
您还可以通过控制器方法使用设置图像的此属性
Cloudder::show(Cloudder::getPublicId(),[“width”=>$width,“height”=>$height])基于我对您问题的理解,我建议创建多个具有所需比例的图像并上传。ie)cxjir4g9tkaa8xepxodg-160x160.jpg
,cxjir4g9tkaa8xepxodg240x240.jpg
etcIf我理解正确,您想在发送url和响应之前将其修改为缩放版本吗?对@Jerodev我确实希望这样,但我不想将缩放后的图像再次存储到云端。我只是想让用户体验一下@cerlin我怎么能使用自定义属性呢?我了解这么多,但如何创建自定义属性,以便它能够自动从数据库中的存储链接或其他方式获取“cxjir4g9tkaa8xepxodg.jpg”。我知道的链接,但代码明智如何做!!!!我还需要在cloudinary中存储图像的实际大小,但是当它返回时,由于这个原因,它应该缩放,我需要一个自定义属性,在那里我被卡住了。$story
是您从数据库查询的模型。由于您没有分享任何关于查询的逻辑,我只是发布了这篇文章,谢谢兄弟。我在资源文件中更改了它,兄弟,我是一个新的拉威尔和网络开发人员,所以。。。还有一个关于linkedn的连接请求,请检查我是否想从您那里了解更多信息,如果有任何疑问,我将非常感谢u bro。姓名:Rashmi Ranjan Sahoo
<div class="col-6 col-md-4 col-lg-3">
<a href="{{$image->image_url}}">
@php
$url = $image->image_url;
@endphp
<img class="img img-fluid" src="{{ str_replace("/upload", "/upload/w_350,h_220,q_70,c_scale", $url) }}" alt="">
</a>
</div>