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

Posted

技术标签:

【中文标题】我可以在不将图像上传到 cloudinary 的情况下转换图像吗?【英文标题】:Can I transform images without uploading them to cloudinary? 【发布时间】:2020-12-22 06:59:54 【问题描述】:

目前我在服务器上的图像上使用不同的转换,然后再将其保存到 cloudinary

例如。宽度、高度、裁剪、重力

using (var stream = file.OpenReadStream())

   var uploadParams = new ImageUploadParams()
    
          File = new FileDescription(file.Name, stream),
          Transformation = new Transformation()
             .Width(500).Height(500).Crop("fill").Gravity("face")
    ;
                
    uploadResult = _cloudinary.Upload(uploadParams);

但我想知道是否可以对图像进行 Cloudinary 转换以查看图像的外观而不先上传它?具体来说,.Crop("fill").Gravity("face")

这样我可以将它显示给用户,他们可以在将其保存到我的 Cloudinary 帐户和服务器之前接受或拒绝它。

具体来说,我正在寻找 Cloudinary 解决方案,而不是第 3 方 JS 库,除非它使用 Gravity("face") 并且体积小

感谢您的帮助

【问题讨论】:

support.cloudinary.com/hc/en-us/articles/… 我很难理解此链接中的信息,但从我所阅读的内容来看,我认为它不会在不先上传之前为我提供转换后的图像。 【参考方案1】:

对于裁剪/调整大小的部分,你可以在没有库的情况下完成,你只需要一个画布,这个链接可以帮助你How to resize then crop an image with canvas

对于Gravity("face") 部分,这是另一个工程级别,你需要一个 AI 来检测和定位所有带有图片的人脸,你必须使用一个库,face-api.js 是 javascript 的最佳解决方案,它唯一的缺点是它的大小“我们正在谈论兆字节”这里是 demo 页面

如果您想要更轻、更快、但“与 face-api.js 相比”更不准确的东西,可以使用 pico.js,这里是 demo 页面

无论如何,祝你好运。

【讨论】:

感谢您的意见。我想我会朝着不同的方向前进。这是用于用户配置文件(社交网站)的表单向导。表单的最后一步是用户图像。我正在使用 ng2-file-upload 从用户那里获取图像,并且我想在将 img 上传并保存到 Cloudinary 之前在屏幕上将其显示为拇指。因此,如果用户不喜欢它,他/她可以上传一个新的来使用。但我需要通过转换运行它并首先将其上传到 cloudinary 以获取 img url 以传递回表单以显示图像。 所以我想我会做的是,一旦他们在入职表单向导中上传了它,我就不会给他们重新上传的能力。如果他们想更改图片,可以在他们的个人资料编辑页面中进行。 我不知道 cloudnary 是如何工作的,但是看看这个“pqina.nl/doka”......老实说,不要认为你需要一个人脸检测系统来裁剪图像,只是让用户裁剪他们自己的图片,让他们更好地控制最终结果,您只需上传一次最终结果。 是的,这类似于cropperjs,但这个不是免费的。我没有办法为此付出代价...... 对不起,我没有看到价格标签,我被细节所吸引......在这种情况下,继续你的解决方案,似乎是一个很好的妥协。祝你好运:)

以上是关于我可以在不将图像上传到 cloudinary 的情况下转换图像吗?的主要内容,如果未能解决你的问题,请参考以下文章

我已经从 html 创建了 pdf 现在我想将此 pdf 上传到 cloudinary 或我们的服务器而不将其保存到客户端 PC

将图像上传到 Cloudinary

未使用 Solidus 和 active_storage 上传到 Cloudinary 的图像

使用 jquery 文件上传将图像上传到 cloudinary 和我自己的服务器

React 和 Node 应用程序未将图像上传到 Cloudinary,404 错误没有解释

如何将图像上传到 Cloudinary - MERN 堆栈