热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDBGridFSstoremultiplesizesofimageoruseontheflyresizing

InmywebappimusingMongoDBGridFStostoreuseruploadedimages.在我的网络应用程序中,我使用MongoDBGridFS来存

In my web app i'm using MongoDB GridFS to store user uploaded images.

在我的网络应用程序中,我使用MongoDB GridFS来存储用户上传的图像。

The rest of the site is managed by MySQL.

该网站的其余部分由MySQL管理。

In a photo table (in mysql) I have three fields for storing the MongoId of the file object.

在照片表(在mysql中)我有三个字段用于存储文件对象的MongoId。

  • small
  • medium
  • large

So I store three versions of the image. Small, medium and large.

所以我存储了三个版本的图像。小,中,大。

My question is, sometimes i'll need to use a thumbnail smaller than the 'small' version of the image (i.e. in a widget box, message avatars etc.) or i'll need to use a slighly smaller version of the medium image.

我的问题是,有时我需要使用小于图像的“小”版本的缩略图(即在小部件框中,消息头像等)或者我需要使用稍微小一点的中等图像版本。

So my question, would it better to just store one image in the GridFS system and then have one field in the photo table storing the MongoID and then create a script that resizes the image on the fly (i.e. http://localhost/image/fetch/{mongoid}?resize=50

所以我的问题是,最好只在GridFS系统中存储一个图像,然后在照片表中有一个存储MongoID的字段,然后创建一个动态调整图像大小的脚本(即http:// localhost / image /取/ {mongoid}?调整= 50

Otherwise, in my db i'll need thumbnail_50, thumbnail_100, medium_300, medium_400 etc. etc.

否则,在我的数据库中我将​​需要thumbnail_50,thumbnail_100,medium_300,medium_400等。

What would be the implications of going down the on-the-fly resize route? is it a bad or a good idea? What would you do?

沿着动态调整大小路线会有什么影响?这是一个坏或好主意?你会怎么做?

Thanks.

1 个解决方案

#1


4  

Resizing on the fly will result in far more CPU load on your server than resizing to a variety of sizes once, and storing the results. On the other hand, resizing ahead of time may result in a larger set of data to be stored in GridFS. In other words, it's a tradeoff.

动态调整大小会导致服务器上的CPU负载大大超过调整大小一次,并存储结果。另一方面,提前调整大小可能会导致更大的数据集存储在GridFS中。换句话说,这是一个权衡。

You could consider a hybrid approach, where you resize on the fly but save the results back to GridFS so that you don't need to resize any one image to a given size more than once.

您可以考虑使用混合方法,在其中您可以动态调整大小但将结果保存回GridFS,这样您就不需要将任何一个图像大小调整为给定大小多次。

You should also know that HTML and CSS allow various options for controlling the displayed size of an image. For example:

您还应该知道HTML和CSS允许使用各种选项来控制图像的显示大小。例如:


Will result in an image scaled proportionally to 50 pixels wide (in most modern browsers, at any rate). You can also use the width and max-width CSS properties to control image size.

将导致图像按比例缩放到50像素宽(在大多数现代浏览器中,无论如何)。您还可以使用宽度和最大宽度CSS属性来控制图像大小。

For myself, and knowing nothing about the volume or file size of the images you'll be storing, I'd probably resize when images are added -- in other words, take the page speed and CPU load hit once -- and then serve the various sizes out of GridFS, using max-width to control the on-screen size if a slightly different size is required in one particular case.

对于我自己,并且对要存储的图像的音量或文件大小一无所知,我可能会在添加图像时调整大小 - 换句话说,将页面速度和CPU负载调整一次 - 然后服务GridFS的各种尺寸,如果在一个特定情况下需要稍微不同的尺寸,则使用max-width来控制屏幕尺寸。


推荐阅读
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • PHP操作MySql数据库_PHP教程:链接数据库$conn@mysql_connect(localhost,root,88888888)ordie(链接错误);解决中文乱码mys ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • mysqldinitializeconsole失败_mysql03误删除了所有用户解决办法
    误删除了所有用户解决办法第一种方法(企业常用)1.将数据库down掉[rootdb03mysql]#etcinit.dmysqldstopShuttingdownMySQL..SU ... [详细]
  • step1.为mongodb添加admin管理员root@12.154.29.163:~#mongoMongoDBshellversionv3.4.2connectingto:mo ... [详细]
  • PHP连接MySQL的2种方法小结以及防止乱码【PHP】
    后端开发|php教程PHP,MySQL,乱码后端开发-php教程PHP的MySQL配置报错信息:ClassmysqlinotfoundinAnswer:1.在confphp.ini ... [详细]
author-avatar
Libra
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有