Store full-res images, then deliver it in certain resolution as needed.
Exposed Server Action:
1. DeleteImage: delete an image based on a GUID image id.
2. GetImage: get ImageURL for a GUID image id, with desired resize resolution in MaxWidthHeight parameter, and what Filename should be declared for browser caching purpose.
Browser cache image based on filename, so if you used same filename, sometime browser will not show new image.
To force image refresh, use different filename.
3. PutImage: upload an image.
Owner = which application owned this image, this is for metadata and subfolder name.
Purpose = right now for metadata only. Example: "Merchant Logo", "User Avatar", etc.
Image = image binary
Filename = metadata only, GetImage's default if no filename input parameter supplied.
MimeType = for browser to recognize image
Description = Image Description (optional), for metadata only.
Image can be stored in database or file system.
There's 2 site property that can be set:
1. IsFileSystem (boolean): if you want to store image on FileSystem, set this to true.
2. StoragePath (text): you need to specify path which Outsystems has access to write.
If you don't have direct access to server to create folder for StoragePath, you can run "FirstTimeFolderCreation" timer using Service Center -> Image Services Application -> Image Services eSpace.
Image files stored on File Systems will have Owner metadata as subfolder.
This component consume 3 Application Objects: 2 entities (metadata and resource), 1 screen (to get resized image in desired resolution).