Duży obraz do schowka zawiesza komputer

16

Więc bawiłem się zdjęciami map wysokości i znalazłem ten:

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

Ten obraz ma rozmiar 21600x10800, kiedy klikam prawym przyciskiem myszy „kopiuj obraz” z mojej przeglądarki (używam chrome), spowalnia mój komputer, aż się zawiesi. Następnie muszę zrestartować. Jestem ciekawy, dlaczego tak się dzieje. Przypuszczam, że jest to rozmiar obrazu, choć po zapisaniu ma on tylko około 6 MB.

Używam również systemu Windows 8.1

Joban Dhillon
źródło

Odpowiedzi:

21

„Kopiuj obraz” kopiuje do schowka surowe dane obrazu, a nie sam plik obrazu.

Surowe dane obrazu to 21600 x 10800 x 3 (obraz 24-bitowy) = 699,840 000 bajtów danych. To około 700 MB danych, które przeglądarka próbuje wbić do schowka.

JPEG kompresuje surowe dane przy użyciu algorytmu stratnego i może uzyskać całkiem dobrą kompresję. Dlatego skompresowany plik ma tylko 6 MB.

Powoduje, że spowalnia Twój komputer, ponieważ prawdopodobnie zapełnia pamięć co najmniej 700 MB danych obrazu, których używa Twoja przeglądarka, aby pokazać ci obraz, kolejne 700 MB (wraz z wszelkimi kosztami związanymi ze schowkiem), aby zapisać go na Schowek i niemała moc obliczeniowa do konwersji obrazu do formatu, który można zapisać w schowku.

Są szanse, że jeśli masz mniej niż 4 GB fizycznej pamięci RAM, wówczas te kopie danych obrazu zmuszają komputer do przeniesienia pamięci do pliku wymiany, próbując jednocześnie spełnić oba wymagania pamięci. Spowoduje to, że programy i dostęp do dysku będą wolne, ponieważ używają dysku i próbują użyć danych, które mogły zostać właśnie stronicowane.

W skrócie: nie używaj schowka do tworzenia dużych obrazów, chyba że masz dużo pamięci i trochę czasu do stracenia.

Jak ładne wykresy? Tak się dzieje, gdy ładuję ten obraz w Chrome, a następnie kopiuję go do schowka na moim komputerze z 12 GB pamięci RAM:

wprowadź opis zdjęcia tutaj

Zaczyna się w dolnym punkcie przy użyciu 2,8 GB pamięci RAM, ładując obraz, dziurkuje go do 3,6 GB (około 700 MB), a następnie kopiuje go do szczytów schowka o 6,3 GB pamięci RAM, zanim osiądzie z powrotem na 4,5-tego można się spodziewać po programie i dwóch kopiach raczej dużego obrazu.

To szczyt 3,7 GB danych obrazu przetwarzanych w szczycie, który jest prawdopodobnie obrazem początkowym, zarezerwowaną ilością dla schowka i być może kilkoma buforami konwersji. To wystarczy, aby sprowadzić dowolną maszynę z mniej niż 8 GB pamięci RAM na kolana.

Co dziwne, robi to samo w przeglądarce Firefox, po prostu kopiuje plik obrazu zamiast danych obrazu bez strasznego wzrostu pamięci.

Mokubai
źródło
Mokubai ma do tego prawo. Ten obraz doprowadziłby do szału większość schowków komputerowych. Aby przenieść ten obraz do lokalizacji, należy go zapisać lub kliknąć prawym przyciskiem myszy i użyć polecenia „Kopiuj lokalizację obrazu”.
TorpedoBench
Miałem kolegę, który zrobił to w systemie Windows 7. Zgłaszał tylko 1-3 sekundowe opóźnienie. Muszę tylko zapytać go, jaką przeglądarkę i ile pamięci RAM.
Joban Dhillon
Tak. Na mojej maszynie było prawie natychmiast, ale potem mam dość dużą ilość pamięci RAM. Jeśli masz mniej niż 8 GB, nie zdziwiłbym się, gdyby Twój komputer miał problemy.
Mokubai
@Mokubai: Nie jestem do końca przekonany. Czy nie trzeba pobierać pliku 700 MB, aby uzyskać 700 MB do schowka? I, jak próbowałem, ten plik jest zdecydowanie mniejszy niż 700 MB.
shortstheory
1
@shortstheory sam plik ma tylko 7 MB, ale jest bardzo skompresowany, ponieważ jest obrazem jpg. Rzeczywiste dane obrazu to około 700 MB. To, co widzisz w pobranym pliku 7mb, to skompresowana reprezentacja obrazu, aby dowolny program, aby faktycznie wyświetlić obraz, musi najpierw zostać zdekompresowany, a dane (nie sam plik) są umieszczane w schowku.
Mokubai