Велике зображення до буфера обміну заморожує комп'ютер


16

Тож я заплутався з деякими зображеннями карти висоти і знайшов це:

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

Це зображення становить 21600x10800, коли я клацну правою кнопкою миші "скопіювати зображення" зі свого браузера (я використовую хром), це сповільнює роботу мого комп'ютера, поки воно не замерзне. Після цього я повинен перезапустити. Мені цікаво, чому це трапляється, я припускаю, що це розмір зображення, хоча його збережено лише близько 6 Мб.

Я також використовую Windows 8.1

Відповіді:


21

"Копіювати зображення" - це копіювання необроблених даних зображення, а не сам файл зображення, у буфер обміну.

Дані необробленого зображення становитимуть 21600 x 10800 x 3 (24-бітове зображення) = 699,840,000 байт даних. Це приблизно 700 Мб даних, який ваш браузер намагається пробукнути до буфера обміну.

JPEG стискає необроблені дані за допомогою алгоритму втрат і може отримати досить гарне стиснення. Отже, стислий файл становить лише 6 Мб.

Причина, через яку ваш комп'ютер робить повільним, полягає в тому, що він, ймовірно, заповнює вашу пам'ять щонайменше даними зображень 700 Мб, які ваш браузер використовує, щоб показати вам зображення, ще 700 Мб (разом з тим, що накладається на верхній буфер обміну), щоб зберігати його на буфер обміну та незначна кількість процесорної потужності для перетворення зображення у формат, який можна зберігати у буфері обміну.

Цілком ймовірно, що якщо у вас менше 4 Гб або менше фізичної оперативної пам’яті, то ці копії даних зображень змушують ваш комп’ютер сторінок пам’яті перейти до файлу swap, намагаючись одночасно виконати обидві потреби пам’яті. Це призведе до того, що програми та доступ до диска будуть млявими, оскільки вони використовують диск і намагаються використовувати дані, які були щойно видані на екран.

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

Як симпатичні графіки? Це те, що відбувається, коли я завантажую це зображення в Chrome і потім копіюю його в буфер обміну на своїй машині з 12 Гб оперативної пам’яті:

введіть тут опис зображення

Він починається в нижній точці, використовуючи 2,8 ГБ оперативної пам’яті, завантажуючи зображення, пробиває його до 3,6 ГБ (приблизно, можливо, 700 Мб), потім копіюючи його в буфер обміну, шипається там на 6,3 ГБ оперативної пам’яті, перш ніж повернутися вниз 4.5-ish ви очікуєте побачити для програми та двох примірників досить великого зображення.

Це колосальні 3,7 ГБ даних, що працюють над піком, що, мабуть, початкове зображення, зарезервована кількість буфера обміну та, можливо, пара буферів перетворення. Цього достатньо, щоб будь-яка машина з менше 8 Гб оперативної пам’яті поставила на коліна.

Як не дивно це робити в Firefox просто копіює файл зображення, а не дані зображення без страшного сплеску пам’яті.


Мокубай має на це право. Це зображення зробило б буфер обміну більшості комп'ютерів. Якщо вам потрібно дістати це зображення до місця, слід або зберегти його, або клацнути правою кнопкою миші та скористатися командою "Копіювати зображення зображення".
TorpedoBench

У мене приятель це робив у 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.