I don't know whether this is a bug with ODK - I had a few instances where a 'field agent' (I don't think it was 007) took images and two were missing. The filename existed in the xml, but nothing uploaded. I also found one image that was partially corrupt (lower part of the image was incomplete).
I am wondering therefore if it is a problem with the phone, possibly the image corrupting before being stored? This was a Galaxy S10, but is not mine so I don't have access to it to look at the storage. I wouldn't know how to test that and it seems to have been intermittent problem - 4 images out of 50, 2 consecutive records, where 3 images were taken but not delivered to the server, and one the following day... The data was sent to Google sheets.
I have used Samsung Galaxy Note II and Note 4 (multiple of each) Sony Xperia Z5 and Fairphone 1 to collect 1000s of records with images and never had this issue. I checked the same form with my Fairphone and Note 4 but couldn't replicate.
Sorry if this isn't a definitive answer, but it might be helpful in tracking down a solution