Storing Icons and Other Images to Use Across Multiple Apps

I have a set of icons that I’m using across multiple apps. Is there any performance difference in the following scenarios?

  1. Create a Glide Table - Upload the Images directly to Glide - Create a relation to this Glide Table - Add a Lookup column - Use this Lookup column as the data source

  2. Create a Glide Table - Upload the Images directly to Glide - Export the Glide table to get the Image URLs (is there an easier way to get these URLs?) - Insert these URLs into a Google Sheet Column - Use the column from the Google Sheet as the data source

The reason I would do scenario 2 is that I have multiple people filling in content for apps and they may need to use different images. I would like them to be able to choose the images and change them directly from the Google Sheet rather than having to access the Glide backend. It’s more work to provide a list of URLs this way (in the past I gave instructions to upload images to Google Drive and get a public link) but I’m trying to get the best possible performance.

Also, does it make any difference where the initial Glide Table is created? I’ll be using the same images across multiple apps for the foreseeable future. I’ll either just link the Glide Table each time I create an app or I’ll provide the list of URLs and leave the Glide Table in whatever app it was originally created in.

Here’s an example of where I would use the images (I need to resize the whitespace around the icons currently so the corners don’t get cutoff):

I haven’t ran across a case where I need to share images across multiple apps, but I use your first scenario in my app. I have an Image Resource table where I have a Key column to store the image name and an image column. Each table that needs an image has the Key value. Using that key value, I create a relation/lookup to get the related image url. This allows me to quickly change an image once, globally, instead of searching through all image urls in all tables if I need to change an image.

As for your second scenario, I think you would be better off using the relation/lookup method, and then provide your users the key value for the image. It would be easier for them to type in ‘Wall’ instead of typing in a URL. Plus, if they manually typed in the url, then you would have no way to globally change that image in the future.

2 Likes

Thanks. I thought about your suggestion, but the problem I saw with that is that there will be times when an “app admin” needs to upload their own image that doesn’t already exist in my Glide Table. So by allowing them to insert the URL into a Google Sheet column, they could use a different source if needed. Can you think of a solution for this that doesn’t require the app admin to log into the Glide backend?

Possibly one of these?:

  1. Create an Admin Image Upload tab in the app where they type in the value for the Key and then use an Image Upload component. Then the app admin types the Key into the Google Sheet.

  2. Create a Glide Page that is essentially an image repository to be used across all of my Glide Apps. Allow image uploads via this Glide Page and provide each App Admin with access to this Page. Create a view that displays the Image Key and the associated Image. I choose the “Sync Data” option and link the Table from the Glide Page on the Glide backend for each app. Create an Image Key column in the Google Sheet for each app where the app admin types in the Key.

Option 2 seems like a potential long term solution. Do you see any problems with it? (I have a non-profit Business plan and the storage limits should be sufficient.)

*Edit: An additional idea to improve the robustness of Option 2 would be to call the API of the Glide Table to import the data into the Google Sheet for the app so that on each Sheet where an image is used, Data Validation could be used to select/make sure that a valid Key is being used for the image. I need to work out the technical aspects of this, but I think it is technically feasible.

This is what I do in my app. Not necessarily for my images, but for documents. Basically it’s a form with a choice component that shows either a Text Entry to enter a url from an outside source, an Image Picker to upload an image, or a File Picker to upload a file (such as a PDF).

Regardless if I choose URL, Image, or File…the same column is used to hold the url.

I think either your Option 1 or Option 2 would work with something like this. I like the global Image Repository Page option.

2 Likes

Hi!
To control the storage limit Im using cloudinary service. All images stored in Cloudinary and the Glide tabe storing just links.
I think: the speed is much more if you storing you images in glige table, because before image bein to downloading to user device - Glige checking necessary size and the server side do resizing images before downloading. Cloudinary have the same function, but athervelse storing in glide table much more faster. But if you use svg instead png or jpg so is minimal size and the fastest and doesnot matter where to store images.