0

我是 Rails 和编码的新手,所以这可能是一个非常基本的问题......

今天晚上我正在开发一个应用程序并更改了图像上传器,以便它将两种不同大小的图像保存到数据库中 - 一个较小的用于在页面上显示,一个较大的版本用于在灯箱(彩盒)中使用。

我遇到的问题是用户在开发和生产中都已经存在于数据库中。幸运的是,我使用 Faker gem 创建了这些用户,而在生产中,我只是发布了一些东西来检查它在生产中的样子。

因此,对于已经在数据库中的图像,它们仅保存为较小的版本,从而使灯箱显示损坏的图像(因为不存在较大的版本)。

因为我可以这样做而不会丢失任何重要的东西,所以我重置了数据库,在开发中我再次运行了 Faker rake,在生产中我只是重新注册并再次上传了一些我自己的照片。(我非常肯定这不是最佳实践......但我真的刚刚进入学习的第二个月......)

我的问题是:有没有办法重做数据库,以便那些原本在那里的图像可以保留下来,并且只是用两个版本重新保存到数据库中。

或者,有没有一种方法只需要保存一个版本的图像,并且灯箱/彩盒可以操纵原始尺寸的图像以呈现我想要的尺寸?例如,也许是当用户上传图像时,图像以较大的版本保存到数据库中,然后对于“缩略图”,我对其进行编码,以便将照片缩小到我想要显示的大小这页纸??

作为参考,这里是应用程序的 Heroku 部署的链接:

http://desolate-waters-6166.herokuapp.com/

我将此应用程序用作我自己的示例应用程序,用于尝试不同的事情并学习如何在没有太大后果的情况下做某事。

提前致谢!如果我需要提供更多信息,请告诉我。我还可以链接这个应用程序的 github 存储库。

4

2 回答 2

0

不错,该网站看起来很酷。要回答您的问题,我没有一种简单的方法,也不值得这项任务来获取所有用户的图像并尝试将它们转换为高质量的图像。我认为最好的选择是为高分辨率缩略图添加一列,并确保缩略图被保存为高分辨率。我确实相信,回答您的第二个问题,如果您存储高质量的图像,那么缩小它不会损害质量,只会超出分辨率的大小,如果这是有道理的。因此,也许不赞成存储低质量的图像,而只存储它们的高分辨率。

于 2013-07-02T05:21:54.083 回答
0

我建议看一下carrierwave gem。它使用 ImageMagick 来调整图像大小并将图像位置存储在数据库中(而不是图像本身)。这样,您可以将图像文件存储在更便宜的免费位置,例如 Amazon 的 S3。另一个优点是尺寸版本控制,它非常流畅。

于 2013-07-02T05:53:37.007 回答