В вебе "
показать" означает "
отправить на устройство пользователя". Поэтому, ваша задача решения не имеет.
Вы можете
осложнить процесс выдирания картинки, но любой, кто умеет нажимать в браузере F12 всё равно сможет её скачать.
Помимо этого встаёт вопрос идентификации пользователя - как узнать, что он уже посмотрел изображение? Самое простое - писать в куки или сессию, но у них ограничен срок жизни. Да, есть
evercookie, но куками, вдобавок, можно манипулировать. Следовательно, нужен какой-то другой механизм. Если картинки доступны только зарегистрированным пользователям, то можно идентифицировать их так и писать информацию о просмотре в БД. Но если доступ к ним не ограничен авторизацией, то вы либо будете выдавать картинку одному клиенту несколько раз, либо не будете выдавать её каким-то клиентам вообще, поскольку определение по ip и юзерагенту очень ненадёжно.
Это, что касается картинок в вакууме. А теперь опишите задачу максимально конкретно, чтобы мы могли посоветовать решение, которое будет работать наиболее надёжно (с учётом перечисленных выше ограничений).