是否有程序或腳本可以讀取標準輸入上的圖像,並將標準輸出寫入已調整大小的圖像而無需等待標準輸入上的EOF?質量差是可以接受的;等待整個圖像加載不是。如何實時製作縮略圖?
ImageMagick(convert
和stream
)會讀取,然後處理,然後輸出。我想要的更像是一個實時流處理器:如果我縮小50%,則應該爲輸入的每兩行(粗略)輸出一行縮略圖,而不管輸入流的狀態如何。
如果這還沒有意義,想象你正在通過慢速網絡連接加載圖像。只要它可以,瀏覽器就開始顯示圖像的上邊緣。如果圖像比窗口大,瀏覽器將其縮小以適應窗口。它不必等待整個圖像加載。
以下是我用於測試的一些工具。這十個片供應端口8080上的圖像,經切片之間有一秒鐘的延遲,以模擬一個較慢的網絡連接:
IMAGE=test.jpg; SLICES=10; SIZE=$(stat -c "%s" $IMAGE); BS=$(($SIZE/$SLICES + 1)); (echo HTTP/1.0 200 OK; echo Content-Type: image/jpeg; echo; for i in $(seq 0 $(($SLICES - 1))); do dd if=$IMAGE bs=$BS skip=$i count=1; sleep 1; done) | nc -lp8080 -q0
運行的是,立即在瀏覽器中打開localhost:8080
看到圖像加載緩慢。如果您將圖像切片管道傳輸至convert
或stream
而不是nc
(省略所有回波),則10秒鐘內不顯示任何輸出,然後立即獲取整個縮略圖。