2

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

像:

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

2 # 数据库中的图像

有办法处理吗??

谢谢,

4

3 回答 3

1

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

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

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

关于速度

1)例如限制图像大小100x100

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

于 2009-10-27T21:45:37.443 回答
0

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

于 2009-10-27T21:42:15.497 回答
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 属性,并且可以有一个上传的图像与多个用户相关联。

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

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

于 2009-10-27T21:46:45.537 回答