I am encountering the same problem, but only with images uploaded via Webform; if I edit the profile, delete the image reference, and re-upload the file, it displays as expected.
The reason is that Webform CiviCRM inserts the image_URL value in the database as the path to the webform upload, e.g. /sites/default/files/webform/NNNN.ext
. The CiviCRM handler (CRM/Utils/File.php) expects CiviCRM-style image URLs of the form /civicrm/contact/imagefile?photo=NNNN.ext
, and so mangles the path twice, once on reading it and then when it runs getFileURL on it.
Thus, anything dependent on $imageURL will break for images uploaded through Webform or other external mechanisms.
The issue is reported on Webform CiviCRM Integration as Contact Image Upload field integration not working with 4.7, first reported by goron on 29 November 2017, with no activity since. I did not find any corresponding issues filed in JIRA. I am using a hacky workaround but it is specific to our particular environment and installation.