node.js - 您可以在 Cloudinary 上编辑用户上传图像的质量吗?
问题描述
我有一个用户上传图片的网站。
我希望所有已上传的图像 + 任何新上传的图像的质量都相同。
有没有一种方法可以轻松编辑已经上传的图像,而无需让用户重新上传各自的图像?
谢谢
解决方案
Cloudinary 的美妙之处在于能够上传原件,然后进行转换。通常,建议看起来是:
- 将
quality
参数设置为auto
(网址中的q_auto)以自动调整图像的质量,以在质量和大小之间取得适当的平衡 - 将
fetch_format
参数设置为auto
( URL 中的f_auto)以根据浏览器自动选择最佳格式。 - 将高度和宽度调整为页面上呈现的必要尺寸。
示例:https ://res.cloudinary.com/demo/image/upload/q_auto,f_auto,w_500/bike.jpg
来源(和更多信息):https ://cloudinary.com/documentation/image_optimization )。
但是如果您需要重新上传内容并保持不变public_id
,最简单的解决方案是使用他们的 API。我建议执行以下操作:
- 使用Admin API 获取资源调用检索需要重新上传的资产。我建议将这些分解,
resource_type
并且我还将包括tags
设置为true
和context
设置为true
好像正在使用的参数。注意Admin API 有速率限制,因此请在此处查看与您的计划相关的使用限制。将这些存储在一个数组中以备后用。响应应包括public_id
,url
,tags
,context
, 等... 遍历前一个数组并使用Upload API 的上传方法
public_id
使用之前检索到的相同参数( 、url
、tags
、context
等)重新上传内容。例如current_assets = [...] for (asset in current_assets) { result = cloudinary.v2.uploader.upload( asset['url'], { public_id: asset['public_id'], tags: asset['tags'], context: assets['context'] // include any incoming transformations to apply to the asset during upload }, (err, res) => { if (err) console.log(err); console.log(res); }) }
推荐阅读
- c# - 在 List 上实现排序算法
- entity-framework - 在 DBFirst 场景中,在映射中添加 .HasIndex() 有什么好处?
- jasper-reports - 如何用一条线覆盖所有的细节空间
- ios - 归档 iOS 应用程序时出错 - “通用专业化”
Swift.String.init 的" - activemq - 如何使我的上次映像恢复策略主题在代理重新启动后仍然存在?
- docker - 如何更正makefile中的docker,它需要至少1个参数来删除所有容器命令
- sharepoint-online - 使用作者/电子邮件使用 SharePoint REST API 进行查询
- javascript - JS Canvas 游戏使用按键事件来修改按住 shift 按钮时的速度
- php - 如何在 Laravel 中创建用户和帖子之间的关系
- r - 尝试在 R 中绘制复杂函数时出现错误消息