【发布时间】:2011-05-06 20:49:08
【问题描述】:
是否有程序或脚本可以在标准输入上读取图像并将调整大小的图像写入标准输出而无需等待标准输入上的 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(省略所有回声),十秒钟内不会出现任何输出,然后您会立即获得整个缩略图。
【问题讨论】:
标签: stream image-manipulation real-time