如果图像与发布的图像相同,我想不复制图像
像:
user1发布图片
user2发布相同的图像db中的2#个图像
有办法解决这个问题吗?
谢谢,
答案 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属性,并且可以将一个上传的图像与多个用户相关联。
然而,我已经建立了许多相当大的系统,用户上传照片(徽章照片,头像照片,有趣的照片,等等),用户之间的实际重叠往往很小。此外,您只需要节省资金,即最便宜的资源:存储空间。通过这条路线,您不会在带宽成本,处理或程序复杂性上节省任何费用。
除非这是一组非常独特的情况(在这种情况下听到你正在做的事情会很好),我建议不要走这条路。