使用 Cloudinary 和 Carrierwave 进行 RMagick 压缩
Posted
技术标签:
【中文标题】使用 Cloudinary 和 Carrierwave 进行 RMagick 压缩【英文标题】:RMagick Compression with Cloudinary and Carrierwave 【发布时间】:2020-01-22 18:13:06 【问题描述】:我想在图像上传到 Cloudinary 之前在 Carrierwave 中使用 RMagick 压缩。
本地 imagemagick 测试表明,一个 37MB 的文件(请不要问为什么它有那么大;))被压缩到只有 4.6 MB 且质量可以接受。
所以现在我想在我的 rails 应用程序中使用与 rmagick 相同的功能,但似乎根本没有进行预处理。上传者上传原始文件,大小为 37MB。
这是我目前拥有的:
class ImageUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
include CarrierWave::RMagick
process :compress => Magick::JPEGCompression
def compress(compression_type)
manipulate! do |img|
img = img.compression(compression_type)
end
img
end
...
我怎样才能实现压缩,并且只有压缩文件上传到 cloudinary?
【问题讨论】:
看一些 CarrierWaveprocess
的例子,看起来他们都直接返回了manipulate!
的结果,最后没有返回img
。这有什么不同吗?
【参考方案1】:
您可能想试试我们的incoming transformation。 例如,您可以使用upload widget 上传图像,并在上传预设中添加传入的转换。或使用 SDK。例如:
Cloudinary::Uploader.upload("sample.jpg",
:width => 2000, :height => 1000, :crop => :limit, :quality => 70)
【讨论】:
以上是关于使用 Cloudinary 和 Carrierwave 进行 RMagick 压缩的主要内容,如果未能解决你的问题,请参考以下文章
由于“cloudinary.uploader 未定义”错误,从 cloudinary 中删除媒体文件失败
使用 markdown 和 cloudinary 的 django 应用程序
我正在尝试使用 Cloudinary post API 上传图像而不使用 Cloudinary SDK
如何在 mongodb 和 mongoose 模型中使用 cloudinary