Trình tạo hình thu nhỏ JPEG nhanh nhất cho Linux


9

Tôi đang tìm kiếm trình chuyển đổi hình ảnh dòng lệnh nhanh nhất cho Linux, có thể đọc một hình ảnh JPEG, thu nhỏ nó xuống tối đa 1366x768 và viết một hình ảnh JPEG 50 chất lượng. Một cái gì đó như thế này, nhưng nhanh hơn nhiều so với ImageMagick:

$ convert -resize x768 -quality 50 foo42.jpg foo42.th.jpg
# takes 0m16.713s for my test image set

Tôi cũng đã thử điều này:

$ <foo42.jpg djpeg | pnmscale -xysize 1366 768 | cjpeg -quality 50 >foo42.th.jpg
# takes 0m12.007s for my test image set, and has lower visual quality than ImageMagick

Vì vậy, tôi muốn có một chương trình, tốt nhất là được viết bằng C, tích hợp djpeg, một phiên bản chất lượng cao hơn của pnmscale và cjpeg.

Tôi vừa tìm thấy swiggle (một chương trình C sử dụng libjpeg), tôi đã tắt một số chức năng mà tôi không cần trong mã nguồn và tôi đã có:

$ swiggle -f -H 768 .
# takes 0m11.378s for my test image set, yields high quality results

Bạn có đề nghị khác? Tôi đoán hầu hết các trình chuyển đổi hình ảnh sử dụng libjpeg, vì vậy sẽ khó có được kết quả nhanh hơn nhiều so với swiggle.


1
Tôi đoán nhanh nhất sẽ sử dụng CUDA hoặc OpenCL (sử dụng sức mạnh của GPU dựa trên NVidia hoặc AMD của bạn). Tôi nghĩ OpenCV hiện sử dụng CUDA trong các phần. Bạn có thể có thể đánh cắp thứ gì đó nếu bạn thuận tiện với c
Matt H

Tôi đồng ý với Matt. Nếu đó là những hình ảnh khổng lồ (và nếu mất 12 giây thì tôi đoán chúng không nhỏ), thì CUDA / OpenCL sẽ thực hiện công việc. Hoặc có được một PC tốt hơn.
Apache

Hình ảnh không quá lớn (4000x3000 là tối đa) - quá trình chuyển đổi mất 12 giây cho một bộ ảnh gồm vài chục hình ảnh.
pts

Câu trả lời:


13

Thư viện nhanh nhất tôi đã sử dụng cho đến nay chắc chắn là EPEG . Nó chỉ có thể tạo ngón tay cái từ các tệp JPG, nhưng nó tạo ra chúng rất nhanh:

$ identify worldmap.jpg
worldmap.jpg JPEG 6400x3200 6400x3200+0+0 DirectClass 8-bit 6.85727mb 0.840u 0:02

Tưởng tượng:

$ time convert -resize 1536x768 -quality 50 worldmap.jpg im_thumb.jpg
# 2.93s user 0.23s system 85% cpu 3.718 total

EPEG:

$ time epeg -w 1536 -h 768 -q 50 worldmap.jpg epeg_thumb.jpg
# 0.31s user 0.01s system 79% cpu 0.404 total

Tôi đã sử dụng thư viện này để tạo ngón tay cái cho một lượng lớn hình ảnh thực sự lớn.


2
github.com/mattes/epeg ... cũng hãy xem ngã ba này.
thảm

1
Xem thêm github.com/fawick/speedtest-resize để biết điểm chuẩn của các thư viện khác nhau
nh2

2

Tôi đã giải quyết vấn đề này bằng cách tải xuống swiggle (hình thu nhỏ JPEG dòng lệnh + trình tạo thư viện ảnh HTML) và sửa đổi nguồn của nó theo nhu cầu của tôi. Xem các phép đo tốc độ trong câu hỏi (nhanh hơn 10% so với djpeg + pnmscale + cjpeg).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.