如果发布的图像相同,我不想复制图像,
像:
user1 发布图片
user2 发布相同的图片2 # 数据库中的图像
有办法处理吗??
谢谢,
http://www.codeproject.com/Messages/2913691/Comparing-one-image-to-many-others-speeded-up.aspx
我在我的程序中使用它,一切都很好!
DB 相关建议:将哈希值存储在表中。然后你只需要一个哈希计算。
关于速度
1)例如限制图像大小100x100
2)当用户尝试登录时,计算他的密码哈希。我认为用户会更频繁地登录然后更新他们的头像。
在保存时计算每个图像的哈希值。当新用户发布相同的图像时,检查该图像的哈希值并查看它是否与数据库中的任何内容匹配
要做到这一点,您需要将附件分解为它们自己的模型。
所以你现在可能拥有的地方
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 属性,并且可以有一个上传的图像与多个用户相关联。
然而,我已经建立了一些相当大的系统,上传用户照片(徽章照片、头像照片、有趣的照片等等),用户之间的实际重叠往往很小。此外,您实际上只是在最便宜的资源上省钱:存储空间。通过这条路线,您不会节省任何带宽成本、处理或程序复杂性。
除非这是一组非常独特的情况(在这种情况下,听到你在做什么会很整洁)我建议不要走这条路。