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?
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?
Odpowiedzi:
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 .
convert -resize 1898x2859 ...
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ć.
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.
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.