1

Если вы возьмете только ведущую часть файла jpg или jp2 или webp, вы получите изображение с отсутствующими частями, иначе декодирование не удастся полностью.

Когда я экспериментировал со специальной запатентованной LuraWave lwf, усечение файла только ухудшало качество равномерно (как если бы изображение изначально кодировалось с более низкими настройками качества)

Какие другие форматы изображений поддерживают это, то есть допускают постепенное ухудшение качества при отсутствии хвоста файла?

Основная идея заключается в том, чтобы хранить изображения с высоким качеством и впоследствии иметь возможность быстро снижать качество (и размер файла) по крупицам без перекодирования.

2 ответа2

2

Чересстрочный PNG поддерживает это внутренне. Я не знаю, насколько хорошо большинство просмотрщиков изображений справится с чистым усечением (т. Е. При отсутствии IEND отмечающего конец файла), но при сохранении с чересстрочной разверткой строки изображения сохраняются в таком порядке, что размытая версия изображения могут быть загружены быстро, а затем изображение медленно уточняется, пока не будет загружено все изображение. Это очень полезно для загрузки изображений по медленным соединениям (Dial-Up, 3G), где вы хотите, чтобы пользователь мог быстро что-то увидеть, вместо того, чтобы заставлять их ждать полного взгляда на изображение.

Вы можете увидеть это, найдя большое изображение (обои?) и сохранить его как чересстрочный .png. Загрузите файл на медленный веб-хост или используйте инструмент, такой как Fiddler, для имитации медленного сетевого подключения, а затем попытайтесь загрузить изображение в браузер.

Сначала вы получите что-то вроде каждой 8-й строки изображения, а затем вы получите каждую 4-ю, а затем каждую другую, а затем вы получите все оставшиеся строки изображения.

0

Не совсем грубое усечение файла, но нечто подобное можно сделать с изображениями djvu c44:

$ c44 q.ppm q.djvu -bpp 0.05,0.1,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70
$ djvuextract q.djvu BG44=data.iff
BG44=data.iff --> "data.iff" (54286 bytes)
$ djvudump q.djvu  | grep INFO
INFO [10]         DjVu 1023x599, v24, 100 dpi, gamma=2.2
$ djvumake 5.djvu  INFO=1023,599,100 BG44=data.iff:5
$ djvumake 10.djvu INFO=1023,599,100 BG44=data.iff:10
$ djvumake 1.djvu  INFO=1023,599,100 BG44=data.iff:1
$ ls -s --block-size=1 1.djvu 5.djvu 10.djvu 
45056 10.djvu   8192 1.djvu  24576 5.djvu

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .