Tôi có một hình ảnh với độ phân giải 18984x28591px nhưng tôi không thể mở nó bằng Paint hoặc với Pixlr Editor để giảm kích thước của nó.
Làm cách nào tôi có thể chuyển đổi hoặc mở hình ảnh lớn này trên máy tính xách tay của mình?
Tôi có một hình ảnh với độ phân giải 18984x28591px nhưng tôi không thể mở nó bằng Paint hoặc với Pixlr Editor để giảm kích thước của nó.
Làm cách nào tôi có thể chuyển đổi hoặc mở hình ảnh lớn này trên máy tính xách tay của mình?
Câu trả lời:
Tôi đã sử dụng ImageMagick trên Ubuntu để thay đổi kích thước những bức ảnh lớn đó.
convert -resize 10% source.jpg dest.jpg
Mất một lúc, nhưng hoạt động với 1 GByte RAM, công cụ đã tạo ra một tệp giống như hoán đổi 4,7 Gbyte cho chính nó.
Thêm thông tin trên AskUbfox .
convert -resize 1898x2859 ...
Về mặt lý thuyết, hầu hết các định dạng hình ảnh có thể được hạ thấp dần dần, mà không tải toàn bộ hình ảnh vào bộ nhớ, tuy nhiên tôi không biết bất kỳ công cụ nào thực sự thực hiện tính năng đó, ngoại trừ JPEG: điều đặc biệt là bạn không thể chỉ thu nhỏ mà không tải độ phân giải đầy đủ, nhưng cũng hạ thấp mà không giải mã được độ phân giải đầy đủ, nhờ sử dụng sáng tạo DCT (JPEG được mã hóa trong miền tần số, có nghĩa là không phải giải mã thành độ phân giải chính xác như ảnh gốc).
Công cụ giải mã JPEG mặc định (dòng lệnh, gói libjpeg-pross trong Linux, tìm djpeg.exe cho Windows) sẽ hạ thấp JPEG lớn trước khi ứng dụng "thông thường" thậm chí có thể tải xong:
djpeg -scale 1/8 huge_image_that_will_not_fit_in_your_ram.jpg >downscaled.ppm
Tôi cũng đã thấy tùy chọn tải xuống trong khi tải xuống trong một số ứng dụng GUI, nhưng không thể nhớ lại nó vào lúc này.
So sánh mức sử dụng bộ nhớ và thời gian xử lý của ImageMagick so với djpeg thu nhỏ hình ảnh lớn (đường ống đến cjpeg , do đó hình ảnh thu được cũng là jpg, để so sánh công bằng với chuyển đổi )
$ 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 so với 1,4 MB và chậm hơn 10 lần - và đây là hình ảnh tương đối nhỏ 13k x 11k có thể vừa hoàn toàn trong RAM nên không xảy ra hoán đổi.
Mặt khác, sử dụng djpeg để thu nhỏ cũng có những hạn chế riêng: lựa chọn hệ số tỷ lệ bị hạn chế và phương pháp lấy mẫu lại không thể thay đổi.
Bạn cũng có thể thử sử dụng Picture Resizer trên Windows (Tôi thích công cụ này)
Bạn chỉ cần kéo và thả hình ảnh trên EXE đơn giản này Điều này đặc biệt hữu ích nếu bạn có nhiều hình ảnh để chuyển đổi vì bạn có thể thực hiện nhiều lần cùng một lúc.
Tất cả các cấu hình được thực hiện thông qua việc đặt tên EXE là IMO tuyệt vời
Tôi chưa bao giờ thử nó với tập tin lớn mặc dù.