我在 Amazon S3 上有一组图像,我想为它们自动生成缩略图以在我的网站上提供服务。
我考虑过 Cloudinary,但似乎我必须先将所有图像复制到 Cloudinary 服务器。我想将它们保留在 S3 上。
我考虑过 Dragonfly,但似乎 Dragonfly 只适用于我在安装 Dragonfly 后上传的文件。我已经上传了所有文件。
对我来说有什么好的解决方案?我在 Rails 环境中(rails 3.2)。
谢谢!
我在 Amazon S3 上有一组图像,我想为它们自动生成缩略图以在我的网站上提供服务。
我考虑过 Cloudinary,但似乎我必须先将所有图像复制到 Cloudinary 服务器。我想将它们保留在 S3 上。
我考虑过 Dragonfly,但似乎 Dragonfly 只适用于我在安装 Dragonfly 后上传的文件。我已经上传了所有文件。
对我来说有什么好的解决方案?我在 Rails 环境中(rails 3.2)。
谢谢!
我错了蜻蜓。您可以在已上传的文件上使用 Dragonfly。我在我的项目中使用它,效果很好。
如果它只是一组“图像”,那么它的结构并不是那么好。您最好重新组织存储和管理图像的方式。
试试回形针。
class ModelName < ActiveRecord::Base
attr_accessible :image #more here
has_attached_file :image, :styles => { :large => "450x450>", :medium => "300x300>", :thumb => "150x150>" },
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "people/:style/:id/:filename",
:s3_protocol => "https"
def original_image_url
image.url
end
def large_image_url
image.url(:large)
end
def medium_image_url
image.url(:medium)
end
def small_image_url
image.url(:thumb)
end
#etc
end
然后只需执行此操作即可通过控制台将现有图像分配给现有实例:
require 'uri'
@instance.image = open(URI::encode(url))
@instance.save
# s3 will now contain the images in the appropriate sizes in the format specified above.
由于原件也将被保存,我建议您删除您开始使用的 s3 上的“图像集”,否则您将复制它们。