回形针 - 图像重复

时间:2009-10-27 21:36:43

标签: ruby-on-rails paperclip

如果图像与发布的图像相同,我想不复制图像

像:

  

user1发布图片
  user2发布相同的图像

     

db中的2#个图像

有办法解决这个问题吗?

谢谢,

3 个答案:

答案 0 :(得分:1)

http://www.codeproject.com/Messages/2913691/Comparing-one-image-to-many-others-speeded-up.aspx

我在我的程序中使用它,一切都很好!

DB相关建议:在表中存储哈希值。然后你只需要一个哈希计算。

关于速度

1)例如,约束图像尺寸100x100

2)当用户尝试登录时,计算其密码的哈希值。我认为用户会更频繁地登录,然后更新他们的头像。

答案 1 :(得分:0)

计算保存时每张图像的哈希值。当新用户发布相同的图像时,检查该图像的哈希并查看它是否与数据库中的任何内容匹配

答案 2 :(得分:0)

要完成此任务,您需要将附件分解为自己的模型。

所以你现在可能有

class User < ActiveRecord::Base
   has_attached_file :avatar #plus a bunch of specifications here
end 

您可以设置新模型和协会,例如

class User < ActiveRecord::Base
   belongs_to :images
end 

class Image < ActiveRecord::Base
   has_many :users
   has_attached_file :avatar
end 

然后在你的控制器中,你需要做

Image.find_or_create_by_avatar_file_name(#filename here)

现在您拥有了user.image_id属性,并且可以将一个上传的图像与多个用户相关联。

然而,我已经建立了许多相当大的系统,用户上传照片(徽章照片,头像照片,有趣的照片,等等),用户之间的实际重叠往往很小。此外,您只需要节省资金,即最便宜的资源:存储空间。通过这条路线,您不会在带宽成本,处理或程序复杂性上节省任何费用。

除非这是一组非常独特的情况(在这种情况下听到你正在做的事情会很好),我建议不要走这条路。