С HTTP-заголовком Range
клиенты могут запрашивать только определенный диапазон байтов с сервера.Загрузить только часть JPG с запросом HTTP
GET myfile.jpg HTTP/1.1
"http://myhost"
Range=bytes=1000-1200
Если сервер поддерживает эту функцию отклика и, возможно, даже показывает, что с помощью Accept-Range
заголовка, выше запрос будет возвращать только 200 байт из байта 1000 года.
Можно ли использовать этот метод для использования с JPG-изображением? Скажем, что фактические размеры JPG 800x1197 пикселей. Что нужно сделать, чтобы запросить только суб изображение между пикселями 200x200 и 400x400?
Мне кажется, что это возможно только для получения разрезанных по горизонтали срезов изображения. Но это уже было бы лучше, чем получение полного файла изображения. Поэтому в приведенном выше примере я бы сказал, что можно попытаться загрузить: срез от 200 (по оси Y) до 400 (по оси Y), а затем обрезать результат на стороне клиента соответственно.
Предположим, что мы уже знаем длины содержимого файла, а также его фактический размер изображения, что может быть определена путем запроса предыдущего HTTP:
длины содержимого в байтах: 88073 Размер JPG: 800x1197
Какой диапазон байтов я должен был запросить для этого изображения? Я предполагаю, что JPG содержит некоторые метаданные, которые также должны учитываться. Или сжатие jpg делает эту попытку невозможной? Было бы хорошо, если окончательный вырез не содержит метаданных от оригинала.
Но все же может потребоваться первоначальный запрос, который берет несколько байтов с самого начала, надеясь получить метаданные. и на основании этого может быть определен фактический диапазон байтов.
Было бы очень приятно, если бы кто-нибудь мог дать мне подсказку, как подойти к этому.
Хорошо, я вижу. Это очень ясно. Я пришел к выводу, что невозможно с тем, что я пытался с JPG. С PNG я думаю, что это сработает, но JPEG работает, как вы его описываете. –