- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有程序或脚本可以读取标准输入上的图像并将调整大小的图像写入标准输出,而无需等待标准输入上的 EOF?质量差是可以接受的;等待整个图像加载不是。
ImageMagick(convert
和 stream
类似)将读取,然后处理,然后输出。我想要的更像是一个实时流处理器:如果我缩小 50%,它应该为每两行输入(大致)输出一行缩略图,无论输入流的状态如何。
如果这还没有意义,想象一下您正在通过慢速网络连接加载图像。一旦可以,浏览器就会开始显示图像的上边缘。如果图像大于窗口,浏览器会将其缩小以适合窗口。它不必等待整个图像加载。
以下是我用于测试的一些工具。这在端口 8080 上提供十个切片的图像,切片之间有一秒的延迟,以模拟慢速网络连接:
IMAGE=test.jpg;切片=10;大小=$(stat -c "%s"$IMAGE); BS=$(($SIZE/$SLICES + 1)); (echo HTTP/1.0 200 OK; echo 内容类型:image/jpeg; echo; for i in $(seq 0 $(($SLICES - 1))); do dd if=$IMAGE bs=$BS Skip=$我计数=1; sleep 1;完成)| nc -lp8080 -q0
运行该程序并立即在浏览器中打开localhost:8080
以查看图像缓慢加载。如果将图像切片通过管道传输到 convert
或 stream
而不是 nc
(忽略所有回显),则十秒内不会出现任何输出,然后您可以立即获得整个缩略图。
最佳答案
根据图像格式,这很困难。例如,PNG 是分块的,并且每个 block 都经过 zlib 压缩,因此您必须先读取文件的大部分内容,然后才能开始渲染图像。 BMP 图像是“自下而上”存储的,从右下角到左上角呈现,因此除非您的缩略图也是 BMP,否则您将读取整个图像或向后处理文件。 JPEG 可以更轻松地做到这一点;它按顺序存储,如果它是渐进式 JPEG,您可以滥用它并仅读取前 N 个 channel 以获得所需的缩略图分辨率。像 DJVU 这样的小波格式也可能更简单。
我认为您不会找到执行此操作的通用工具,但您可以编写一个自定义的特定于格式的流解码器来处理它。
关于stream - 如何实时生成缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916865/
我有一个具有可变数量子元素的固定大小的 div。我不知道 children 的大小。目标是缩小它们以适合父级。 例子: .parent { width: 100px; height: 100p
我是一名优秀的程序员,十分优秀!