Nice initiative - I have seen this in other desktop GIS software.
Have a look at the 'ImportPhotos' plugin that is available, to quote the plugin details
"...and the other one is to be able to click on a point and display the photo along with information regarding the date time and altitude."
This plugin might do some or all of what you are wanting ...
The following should more less do what you want
project = QgsProject.instance()
manager = project.layoutManager()
layout = manager.layoutByName('your_layout')
layoutItemPicture = QgsLayoutItemPicture(layout)
In the original code, iface.addMapLayers does not exist not anywhere in the doc e.g https://qgis.org/api/classQgisInterface.html. So, simply remove it.
Because of the previous remark, settings.setLayers([vlayer]) can't work as vlayer content is None.
Use settings.setLayers([wlayer, olayer]) instead to solve your issue.
This could give you some ideas, I use QGIS and networkx python module to check if raster extents intersects:
import networkx as nx
layerlist = [layer for layer in QgsProject.instance().mapLayers().values()]
rasterlist = 
for l in layerlist:
for l2 in layerlist:
if l.name()!=l2.name() and l.extent().intersects(l2.extent()):