如何在PostgreSQL中创建缩略图

时间:2011-04-28 14:40:41

标签: postgresql image-scaling

我想将图像和其他文档存储在PostgreSQL表中,以及每个图像的缩略图。原始文档和缩略图将是两个单独的bytea字段。 PostgreSQL正在Linux上运行。

因为图像数据可能来自几个不同的应用程序,所以我希望将PostgreSQL中的图像处理代码(用于创建缩略图)作为一个函数,而不是每个单独的应用程序都必须创建缩略图。 PostgreSQL有没有办法创建图像的缩略图?

5 个答案:

答案 0 :(得分:4)

PostPic听起来就像您正在寻找的Postgres扩展程序。

正如他们wiki中所述,您可以轻松调整大小并创建缩略图:

  

FUNCTION缩略图(i图像,尺寸INT)返回图像

     

FUNCTION调整大小(i image,w INT,h INT)RETURNS image

答案 1 :(得分:2)

我建议您改为使用通用接口或API吗?

对于我的摄影平台,我有一个上传API,一切都通过,虽然有大约4种不同的方式来实际上传(浏览器,桌面,手机和软件插件)。然后,Upload API具有使用一些强大且高性能的库(我使用Python,所以PIL)来操作图像的功能,然后将它们保存到数据库中(实际上,我将保存到文件系统并引用它们) DB,但想法是一样的。)

另一种方法是缩略图生成器服务可以驻留在数据库之外,然后偶尔循环遍历尚未生成缩略图的所有行,生成一个,然后将其存储回Postgres。

如果你最终在Postgres内部进行图像处理,尤其是在内存方面,你会要求一个性能受损的世界。

答案 2 :(得分:0)

最简单的答案:不要将图像存储在数据库中。它缓慢,无效,无法扩展,使备份时间更长。

当你将它们存储在文件系统上时 - 只需添加中间件来调整它们,或者是一个简单的守护进程,它将调整所有新图像的大小。

答案 3 :(得分:0)

  

PostgreSQL有什么办法吗?   能够创建一个缩略图   图像?

没有。 PostgreSQL是一个数据库引擎,它只允许存储和检索数据,并在某种程度上操纵它。但在其中进行一些图像处理会走得太远。 图像大小调整应在数据库外部完成。

而且,正如其他评论者所说,也考虑不将图像数据存储在数据库中的选项 - 只有一些路径或定位器。这是可选的,但通常更实用。 阅读一些相关问题: Storing Images in DB - Yea or Nay?Storing a small number of images: blob or fs?

答案 4 :(得分:0)

我在perl中只修改了一些简单的函数,但是如果你安装pl / perlu,很可能有很多合适的库。

如果不能选择pl / perl2,请相应地配置pl / perl:

plperl.use_strict = true
plperl.on_init = 'use stuff1; use stuff2;'
相关问题