Иногда при использовании наших компьютеров происходит что-то действительно странное, что вообще не имеет смысла… например, копирование простого изображения в буфер обмена и компьютер зависает из-за этого. Изображение - это изображение, верно? Сегодняшний пост SuperUser дает ответ на дилемму озадаченного читателя.
Сегодняшняя сессия вопросов и ответов проходит благодаря SuperUser - подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.
Исходное изображение любезно предоставлено Викимедиа .
Вопрос
Читатель SuperUser Джобан Диллон хочет знать, почему копирование изображения в буфер обмена на его компьютере приводит к его зависанию:
Я возился с изображениями карты высот и нашел вот это:
( http://upload.wikimedia.org/wikipedia/commons/1/15/Srtm_ramp2.world.21600×10800.jpg )
![]()
Размер изображения 21 600 * 10800 пикселей. Когда я щелкаю правой кнопкой мыши и выбираю «Копировать изображение» в моем браузере (я использую Google Chrome), мой компьютер замедляется до тех пор, пока он не зависнет. После этого я должен перезапустить. Мне любопытно, почему это происходит. Я предполагаю, что это размер изображения, хотя при сохранении на мой компьютер он составляет всего около 6 МБ. Я также использую Windows 8.1
Почему простое изображение зависало бы от компьютера Джобана после его копирования в буфер обмена?
Ответ
У участника SuperUser Мокубай есть ответ:
«Копировать изображение» - это копирование необработанных данных изображения, а не самого файла изображения в буфер обмена.
Необработанные данные изображения будут иметь размер 21 600 x 10 800 x 3 (24-битное изображение) = 699 840 000 байт данных. Это примерно 700 МБ данных, которые ваш браузер пытается скопировать в буфер обмена.
JPEG сжимает необработанные данные, используя алгоритм с потерями, и может получить довольно хорошее сжатие. Следовательно сжатый файл всего 6 МБ.
Причина, по которой ваш компьютер замедляется, заключается в том, что он, вероятно, заполняет вашу память как минимум 700 МБ данных изображения, которые ваш браузер использует, чтобы показать вам изображение, еще 700 МБ (вместе с любыми накладными расходами, которые несет буфер обмена) для хранения это в буфере обмена, и немалая вычислительная мощность для преобразования изображения в формат, который может быть сохранен в буфере обмена.
Скорее всего, если у вас меньше 4 ГБ физической ОЗУ, то эти копии данных изображения вынуждают ваш компьютер выгружать память в файл подкачки в попытке удовлетворить оба требования к памяти одновременно. Это приведет к тому, что программы и доступ к диску будут медленными, поскольку они будут использовать диск и пытаться использовать данные, которые могли быть только что выгружены.
Вкратце: не используйте буфер обмена для огромных изображений, если у вас нет много памяти и немного свободного времени.
Любите красивые графики? Вот что происходит, когда я загружаю это изображение в Google Chrome, а затем копирую его в буфер обмена на моем компьютере с 12 ГБ ОЗУ:
![]()
Он начинается с нижней точки, используя 2,8 ГБ ОЗУ, загрузка изображения увеличивает его до 3,6 ГБ (примерно 700 МБ), затем копирует его в буфер обмена, резко увеличивается до 6,3 ГБ ОЗУ, а затем снова устанавливается на Примерно 4.5 для программы и двух копий довольно большого изображения.
Это колоссальные 3,7 ГБ данных изображения, которые обрабатываются на пике, что, вероятно, является исходным изображением, зарезервированным объемом для буфера обмена и, возможно, парой буферов преобразования. Этого достаточно, чтобы поставить на колени любую машину с объемом оперативной памяти менее 8 ГБ.
Как ни странно, то же самое в Firefox просто копирует изображение файл а не изображение данные (без пугающего всплеска памяти).
Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь .