I know that placing calculations in fields that appear in portals can be a little unreliable so I'm looking for a better way to do this.
That is not necessarily the case. Calculation fields usually work just fine in a portal row.
I'm assuming the best way would be to put the photos in a container field on a separate related table (call it PHOTOS). Then in another table I would place all the individual data (call it DATA) for that particular specimine (ID, start date, end date etc).
If you have one record in DATA for each photo in PHOTOS, then there is no need for two tables unless you need to use Import Records | Folder to pull the photos into your database to match up with existing records in DATA.
If there are many records in DATA for one record in Photos, you can use a layout based on PHOTOS with a portal to Data to display the associated data. IF there is one record in DATA for many PHOTO records, the reverse can be done.
Under no circumstances should you try to use a repeating field for this purpose.
There would be several records for PHOTOS for each record in DATA. Each specimine would have several photos documenting phases of growth over time. Thanks for the answer, I'll try building it that way.