Большое изображение в буфер обмена зависает компьютер


16

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

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

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

Я также использую Windows 8.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 просто копирует файл изображения, а не данные изображения без страшного всплеска памяти.


Мокубай имеет на это право. Это изображение заставит большинство компьютерных буферов обмена сойти с ума. Если вам нужно получить это изображение в определенном месте, вы должны либо сохранить его, либо щелкнуть правой кнопкой мыши и использовать команду «Копировать местоположение изображения».
ТорпедоБенч

У меня был приятель, который делал это на Windows 7. Он сообщил об отставании всего в 1-3 секунды. Я просто должен спросить его, какой браузер и сколько оперативной памяти.
Джобан Диллон

Да. На моей машине это было практически мгновенно, но тогда у меня довольно большой объем оперативной памяти. Если у вас меньше 8 ГБ, я не удивлюсь, если ваша машина будет бороться.
Мокубай

@Mokubai: я не совсем убежден. Не нужно ли загружать файл размером 700 МБ, чтобы получить 700 МБ в буфер обмена? И, как я уже пробовал, этот файл определенно меньше 700 МБ.
короткая теория

1
@shortstheory сам файл только 7 МБ, но он сильно сжат, поскольку это изображение JPG. Фактические данные изображения составляют примерно 700 МБ. То, что вы видите в загрузке 7 МБ, представляет собой сжатое представление изображения, для любой программы, чтобы фактически просмотреть изображение, оно должно быть сначала распаковано, и именно эти данные (а не сам файл) помещаются в буфер обмена.
Мокубай
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.