When to resize user uploaded images
Imported From: http://groups.google.com/group/in-portal-dev/browse_thread/thread/258bf8fc5b451688#
It's obvious, that users upload images in a higher resolution, then actually is needed on a website and they needs to be resized.
Right now to speed up uploading process In-Portal don't resize image right after uploading, but only at time, when it's displayed in a different resolution on a website. This seems to be very good solution when:
- small amount of users tries to view a page with image thumbnails displayed;
- images were originally uploaded in low resolution (smaller then 1MB on size).
But in case when a lot of users tries to see page with resized images at a same time and original images are ~4MB+ in size, then it will take a lot of memory and will attempt to resize same image multiple times.
In-Portal don't pre-resize images in background, because it can't guess what image dimensions would be requested in actual theme, user set's as primary.
But I have an idea, how to overcome that:
Create new column in Theme table, called ImageResizeRules
, where per-path image resize rules will be written in following format:
/system/path/one/:format1
/system/path/two/:format2
Usually each line would look something like this:
/system/images/manufacturers/:resize:100x75;default:img/no_picture.gif
Actual data to place in ImageResizeRules
field of the theme database table will be retrieved from <image_resize_rules>
node in /_install/theme.xml
file of individual theme.
Then CRON script would scan all rules from each theme and pre-resize images according to them.
Even more, if we would consider using Message Queuing servers, like ZeroMQ, then we could schedule resize jobs right after image was uploaded.