Jak mogę otworzyć bardzo, bardzo duży obraz, aby go zmniejszyć?

14

Mam obraz o rozdzielczości 18984x28591px, ale nie mogę go otworzyć w programie Paint lub w edytorze Pixlr, aby zmniejszyć jego rozmiar.

Jak mogę przekonwertować lub otworzyć ten duży obraz na moim laptopie?

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Educ
źródło
4
Problemem nie jest DPI, ale prawdopodobnie rozmiar pliku. Powinien być większy niż 1,5 GB! Czy tak jest
TFuto
rozmiar obrazu to 31,3 MB (32 846 155 bajtów)
Educ
2
Przepraszamy, nie wymiar pliku. Rozmiar w pamięci RAM. Jeśli zdekodujesz to do normalnej reprezentacji, będzie to wymagało 18984x28591x3 bajtów ~ = 1,5 GB. Będziesz potrzebował przynajmniej takiej ilości pamięci RAM, aby ją otworzyć. I prawdopodobnie kolejny 1 Gbyte do manipulowania nim. I 1 GB na system operacyjny. Coś w tym stylu.
TFuto
to moje osobiste zdjęcie. Czy mogę to wysłać do Ciebie na dysk Google, aby zmniejszyć rozmiar, jeśli to możliwe, i z góry dzięki
Educ
2
Tak, mogę spróbować. :-) Możesz także wypróbować konwerter wsadowy IrfanView, może to pomóc.
TFuto

Odpowiedzi:

29

Użyłem ImageMagick na Ubuntu, aby zmienić rozmiar tych dużych zdjęć.

convert -resize 10% source.jpg dest.jpg

Zajęło to trochę czasu, ale działało z 1 GB pamięci RAM, narzędzie stworzyło dla siebie plik podobny do wymiany 4,7 GB.

Więcej informacji znajduje się na AskUbuntu .

TFuto
źródło
3
Możesz także nadać mu określoną rozdzielczość, np.convert -resize 1898x2859 ...
Michael Hampton
2
Dostępne również w OSX.
o0 ”.
1
Istnieje również wersja systemu Windows.
Tonny,
9

Teoretycznie większość formatów obrazów można stopniowo przeskalować w dół, bez ładowania całego obrazu do pamięci, jednak nie znam żadnych narzędzi, które tak naprawdę implementują taką funkcję, z wyjątkiem JPEG: jest to wyjątkowe, ponieważ nie można skalować w dół bez ładowania pełnej rozdzielczości, ale także przeskalowanie w dół bez dekodowania pełnej rozdzielczości, dzięki kreatywnemu wykorzystaniu DCT (JPEG jest zakodowany w dziedzinie częstotliwości, co oznacza, że ​​nie musi być dekodowany do dokładnie takiej samej rozdzielczości jak oryginalny obraz).

Domyślny JPEG Deaktywator (wiersz polecenia, libjpeg-progs pakiet w systemie Linux, poszukaj djpeg.exe dla Windows) będzie w dół skali ogromny JPEG przed „zwykłej” aplikacji może nawet zakończyć ładowania go:

djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm

Widziałem również opcję zmniejszania skali podczas ładowania również w niektórych aplikacjach GUI, ale w tej chwili nie mogę jej przywrócić.

Reper!

Porównanie użycia pamięci i czasu przetwarzania ImageMagick vs djpeg przeskalowanie w dół dużego obrazu ( potokowanie do cjpeg , więc obraz wynikowy to także jpg, dla uczciwego porównania z konwersją )

$ display -verbose input.jpg 
input.jpg JPEG 13114x11722 13114x11722+0+0 8-bit sRGB 30.75MB 6.690u 0:06.699

$ /usr/bin/time -f "time=%E mem=%MK" bash -c "convert input.jpg -scale '12.5%' output.jpg"
time=0:10.72 mem=1225844K

$ /usr/bin/time -f "time=%E mem=%MK" bash -c "djpeg -scale 1/8 input.jpg | cjpeg > output2.jpg"
time=0:00.88 mem=1412K

1,2 GB w porównaniu z 1,4 MB i ponad 10 razy wolniej - a było to na względnie małym obrazie 13k x 11k, który mógł zmieścić się całkowicie w pamięci RAM, więc nie nastąpiła zamiana.

Z drugiej strony użycie djpeg do skalowania w dół ma również swoje własne ograniczenia: wybór współczynnika skalowania jest ograniczony i nie można zmienić metody ponownego próbkowania.

szulat
źródło
7

Możesz także spróbować użyć programu Picture Resizer w systemie Windows (uwielbiam to narzędzie)

Po prostu przeciągnij i upuść obraz na tym prostym pliku EXE Jest to szczególnie przydatne, jeśli masz wiele zdjęć do konwersji, ponieważ możesz zrobić wiele na raz.

Cała konfiguracja odbywa się poprzez nazewnictwo EXE, który jest genialnym IMO

Jednak nigdy nie próbowałem tego z ogromnym plikiem.

mateoc
źródło