如何将高分辨率照片调整为缩略图?

时间:2010-12-20 16:56:52

标签: ruby-on-rails ruby image image-manipulation ruby-on-rails-3

我有一个用户可以上传照片的网站。我不知道如何处理照片。要从大型res照片中制作缩略图,我是否只调整宽度和高度?或者有更好的方法吗?

如果您可以向我指出任何资源或给我任何提示,那就太棒了。

我正在使用Ruby on Rails,如果这很重要的话。我真的不想要宝石,因为我想学习如何自己做。

3 个答案:

答案 0 :(得分:3)

对于其中的一部分,“学习如何自己做”将是一项重大任务。例如,调整图像大小。继续寻找一个开源库(如gem),它可以调整图像大小并查看其源代码。你自己做的并不是不可能的,但是很多东西都建立在以前的专业知识之上,等等。如果你明白这个工具是什么,那么使用其他人创建的工具并没有错。做。

希望能帮到你的几点:

  1. 使用您支持的图像格式的白名单方法。不要让用户上传他们称之为图像的任何内容。
  2. 您支持的每种格式都有自己的元数据标准(可能是多个)。剥离数据批发可能是也可能不是一个好主意。例如,jpeg可能在其EXIF数据中包含其方向,如果将其去除,则可能会有效地旋转图像。某些字段,例如地理标记,您可能想要剥离以保护用户的隐私等。再次,查看现有的库,看看他们是如何做到的。
  3. 不要隐式信任文件扩展名以确定图像的类型。用户可以构建一个非真实图像的恶意文件,将其作为图像传递给不知情的主机,并在尝试将文件作为图像处理时有效地打开该主机上的安全漏洞。关于确定Ruby here中的文件类型存在一个问题,我确信在该主题上还有更多内容。

答案 1 :(得分:2)

大卫很好地回答了这个问题,但我想我可以提供一些关于你问题的更具体的信息。

使用Paperclip gem,结合RMagick,一个用于Ruby的ImageMagick包装器。您可以设置后处理选项并创建多个限制。

如果您真的想自己动手,请查看https://github.com/thoughtbot/paperclip的实际宝石,然后您会看到该作者是如何做到的。 Ruby on Rails背后的部分思想是DRTW(不要重新发明轮子)。利用那里的东西并以此为基础。它将节省您的时间,并使您能够在长期运行中完成更多工作。

答案 2 :(得分:0)

另一种方法是使用第三方服务,例如http://resizer.co(我不隶属于)

将网址替换为您网站上的图片,例如:

http://example.com/images/abc123.jpg

以下(对于200 x 200图像)

http://www.resizer.co?image=http://example.com/images/abc123.jpg&w=200&h=200

你可能会遇到失真问题而且“长宽比”没有得到维护,但这可能是一个好的开始。