如何使用 Cloudinary 将带有转换的 url 输出为字符串?

Posted

技术标签:

【中文标题】如何使用 Cloudinary 将带有转换的 url 输出为字符串?【英文标题】:How can I use Cloudinary to output a url with transformation as a string? 【发布时间】:2013-07-05 02:28:10 【问题描述】:

我会先说这可能是错误地处理这个问题。我想要做的是使用data- 属性将带有转换的url 传递给JS。

目前,我正在使用以下内容来生成图像标签:

= cl_image_tag(image.asset.filename.to_s, transformation: "scroller", :"data-medium" => image.asset.filename.to_s)

产生这个:

<img src="http://res.cloudinary.com/bucket/image/upload/t_scroller/v1373070863/s1ufy3nygii85ytoeent.jpg" data-medium="s1ufy3nygii85ytoeent.jpg">

我想做的是让它输出这个(利用我设置的t_medium命名转换):

<img src="http://res.cloudinary.com/bucket/image/upload/t_scroller/v1373070863/s1ufy3nygii85ytoeent.jpg" data-medium="http://res.cloudinary.com/bucket/image/upload/t_medium/v1373070863/s1ufy3nygii85ytoeent.jpg">

目前,cl_image_tag 正在通过使用正确配置的 URL 生成图像标签来完成繁重的工作。这很棒,但是我似乎找不到任何关于如何将配置的 URL 输出为不带图像标记的字符串的文档(用作 data-medium 属性)。我可以手动配置网址,但我想知道是否有更好的方法?

【问题讨论】:

我向 Cloudinary 支持提交了一张票。等待他们的回音。 是什么让您认为这是一个 Cloudinary 问题?您是否尝试使用 Carrierwave 进行版本控制? AFAIK,这可能是你最好/最简单的选择。 见下面 Tal Lev-Ami 的回答。我不想对carrierwave 使用版本控制的原因是我有一个单一的多态图像模型,用于每个图像上传实例。因此,需要创建许多版本的图像,但是,只有一些模型使用其中的一些版本。我不想制作永远不会使用的不必要的版本。 cloudinary 之所以如此吸引人的部分原因是因为他们会即时进行图像处理,从而消除了对载波版本控制的需要。 【参考方案1】:

您可以使用 cloudinary_url 帮助器生成不带图像标签的 URL。例如:

cloudinary_url(image.asset.filename.to_s, transformation: "medium")

正如zeantsoi所说,如果你使用的是CarrierWave,你也可以将上传器本身作为参数传递:

cloudinary_url(image.asset, transformation: "medium")

【讨论】:

好的,谢谢。在收到 Cloudinary 支持人员的回复后,正准备自己发布此内容。【参考方案2】:

在 Tal Lev-Ami 的回答之上:

如果您需要在视图之外调用 cloudinary_url(例如在 api 的序列化模型中),您有两种选择:

依靠“帮手”:helper.cloudinary_url 或使用Cloudinary::Utils.cloudinary_url

【讨论】:

以上是关于如何使用 Cloudinary 将带有转换的 url 输出为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义 url 和文件夹将图像上传到 cloudinary

如何将缓冲区图像上传到 cloudinary?

如何在节点中使用 multer 将图像上传到 cloudinary 并与其他数据一起表达

如何使用 expo(文件系统)将视频转换为 base64

使用带有 cloudinary api 的 multer 库

我可以在不将图像上传到 cloudinary 的情况下转换图像吗?