Я думаю, что это прерывание передачи.
Я вижу много случаев: либо ваше соединение было сброшено, в этом случае тестирование сигнала сокета должно позволить вам диагностировать проблему и повторно начать загрузку.
Или есть необнаруженная ошибкаво время передачи (но обычно TCP / IP должен иметь дело с этим) и / или вы не пишете все загруженные правильно (вы думаете, что прочитали все данные на сокете, но чтение дает наименьшее значение, и вы не проверяетевозвращаемое значение, чтобы проверить, что это предполагаемый размер), а затем ваше изображение не является полным.
Обычно полусерые изображения (особенно JPEG) являются признаком файла, который не является полным (заголовки в порядке, поэтомуесть проблема с вами, getimagesize), но JPEG не заканчивается 0xFF 0xD9
.Поэтому убедитесь, что вы прочитали все данные, сравнивая с размером, который вы должны прочитать.В конце концов вы можете написать зависимую от формата изображения функцию для проверки целостности файла, например, путем проверки флагов в JPEG.Но это может быть ресурсоемким.