16

Так что я возился с некоторыми изображениями карты высот и нашел это:

http://upload.wikimedia.org/wikipedia/commons/1/15/Srtm_ramp2.world.21600x10800.jpg

Это изображение размером 21600x10800, когда я щелкаю правой кнопкой мыши "копировать изображение" из браузера (я использую хром), оно замедляет работу компьютера до тех пор, пока оно не зависнет. После этого я должен перезагрузить. Мне любопытно, почему это происходит, я предполагаю, что это размер изображения, хотя при сохранении он составляет всего около 6 МБ.

Я также использую Windows 8.1

1 ответ1

21

«Копировать изображение» копирует необработанные данные изображения, а не сам файл изображения, в буфер обмена.

Исходные данные изображения будут 21600 x 10800 x 3 (24-битное изображение) = 699 840 000 байт данных. Это примерно 700 МБ данных, которые ваш браузер пытается вставить в буфер обмена.

JPEG сжимает необработанные данные с использованием алгоритма с потерями и может получить довольно хорошее сжатие. Следовательно, сжатый файл составляет всего 6 МБ.

Причина, по которой он замедляет работу компьютера, заключается в том, что он, вероятно, заполняет вашу память по крайней мере 700-мегабайтными данными изображения, которые ваш браузер использует, чтобы показать вам изображение, еще 700-мегабайтными (вместе с какими-либо накладными расходами, которые несет буфер обмена) для его сохранения на буфер обмена и немалый объем вычислительной мощности для преобразования изображения в формат, который можно сохранить в буфере обмена.

Скорее всего, если у вас меньше 4 ГБ или меньше физической ОЗУ, то эти копии данных изображения вынуждают ваш компьютер выкладывать память в файл подкачки, пытаясь одновременно выполнить оба требования к памяти. Это приведет к замедлению доступа к программам и дискам, поскольку они используют диск и пытаются использовать данные, которые только что были выгружены.

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

Нравится красивые графики? Вот что происходит, когда я загружаю это изображение в Chrome, а затем копирую его в буфер обмена на моей машине с 12 ГБ ОЗУ:

Он начинается в нижней точке с использованием 2,8 ГБ ОЗУ, загрузка изображения обрезает его до 3,6 ГБ (примерно, может быть, 700 МБ), а затем копирует его в буфер обмена, поднимая его до 6,3 ГБ ОЗУ, прежде чем вернуться к 4.5-дюймовое изображение, которое вы ожидаете увидеть для программы и двух копий довольно большого изображения.

Это колоссальные 3,7 ГБ данных изображений, которые обрабатываются на пике, и это, вероятно, начальное изображение, зарезервированное количество для буфера обмена и, возможно, пара буферов преобразования. Этого достаточно, чтобы поставить на колени любую машину с объемом оперативной памяти менее 8 ГБ.

Странно делать то же самое в Firefox просто копирует файл изображения, а не данные изображения без страшного всплеска памяти.

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