2013-02-16 71 views
0

我试图上传来自帖子的全尺寸图像,然后缩略图并将缩略图放在S3上。但是,我遇到了一个奇怪的问题,即我的调整大小代码似乎正在影响全尺寸图像,即使S3在任何调整大小发生之前都应该存储它。这里的代码说明它的一个片段:MiniMagick影响调整大小代码之前的Amazon S3文件

AWS::S3::S3Object.store(fullPath, open(params[:photo][:tempfile]), BS.config[:service][:aws][:bucket], :access => :public_read) 

    thumbnail = MiniMagick::Image.open(params[:photo][:tempfile].path) 
    thumbnail.combine_options do |c| 
    c.resize('200x200^') 
    c.gravity('center') 
    c.crop('200x200+0+0') 
    end 

    AWS::S3::S3Object.store(thumbnailPath, thumbnail.to_blob, BS.config[:service][:aws][:bucket], :access => :public_read) 

回答

0

即使你做大小调整之前调用store,但也不能保证为resize用于存储的代码之前不会开始编写代码已经完成,因为有所涉及的网络延迟和docs for S3Object明确指出,较大的文件(其中的图像文件肯定可归类)将以块形式发送,这很可能是您正在修改尚未发送的文件。

不管什么原因,简单的答案就是制作一个文件的副本并调整它的大小。

+0

我结束了使用回形针,因为它提供了我所需要的更简化的包。我认为这是正确的,因为这是我原来的问题的正确答案。 – nullfox 2013-02-23 06:23:06

+0

@nullfox很高兴你有它排序。 – iain 2013-02-23 06:38:16

相关问题