Я не знаю ни одного способа указать, сколько байтов нужно загружать с помощью обычного HTTP-запроса. Это ситуация «все или ничего».
Некоторые типы файлов разрешают разделы файлов, но для того, чтобы включить это, вам потребуется контроль над сервером.
Прошло много времени с тех пор, как я играл на этом уровне, но теоретически вы можете использовать блок с Net :: HTTP или Open-URI и считать байты до тех пор, пока не получите соответствующий номер, чтобы добраться до размер блока изображения, затем закройте соединение. Ваш стек TCP, вероятно, был бы не слишком доволен вами, особенно если вы много этим занимались. Если я правильно помню, он не будет распоряжаться памятью до тех пор, пока не истечет время ожидания соединения, и не сожрет доступные соединения, как на вашей стороне, так и на сервере. И если бы я запустил сайт и обнаружил, что производительность моего сервера оказалась под угрозой из-за преждевременного закрытия соединений, я бы забанил вас.
В конечном счете, ваше лучшее решение - это поговорить с тем, кто владеет сайтом, который вы грабите, и посмотреть, есть ли у них API, чтобы сообщить вам, каковы размеры файлов. Их сторона соединения может выяснить это намного быстрее, чем ваша сторона, так как вам нужно получить весь файл. Если ничего другого, предложите написать им что-нибудь, что может сделать это. Возможно, они поймут, что, включив его, вы не будете использовать всю их пропускную способность для извлечения изображений.