【发布时间】:2011-02-20 03:35:13
【问题描述】:
上面的jpg图片是怎么动画的?据我所知jpg 格式不支持动画。
【问题讨论】:
-
谢谢你们。看起来足够深:)
-
既然诺多林先回答,那我就给他答对分吧。
上面的jpg图片是怎么动画的?据我所知jpg 格式不支持动画。
【问题讨论】:
不,JPEG 文件格式不支持动画。
您链接的图像实际上是一个带有jpg 文件扩展名的动画GIF。 (在这种情况下,浏览器显然会忽略 MIME 类型并查看文件头字节。)
【讨论】:
如果你在firefox中查看图片,你可以右键点击它并选择属性:
你会看到Type: GIF image (animated, 54 frames)
因此,它是一个已重命名为 .jpg 的 gif 图像。
【讨论】:
为了完整起见,我想指出 Motion-JPEG - 一种 jpg 动画。
MJPEG,通常由网络摄像头生成,是一个接一个连接在一起的 JPEG 文件流,有时由 HTTP 标头分隔,由 MIME 类型为 multipart/x-mixed 的网络摄像头网络服务器提供-replace;boundary=,其中boundary=定义分隔符。
搜索与动画 JPEG 相关的项目 on github 会发现两个结果:
如果人们关心动画 GIF 的大小,他们会将其剥离成单独的 JPG 帧,并告诉浏览器通过一些 JavaScript 代码就地交换这些帧。对于example。 (Pawel的回答)
那么实际上有一个提议的Animated JPEG 标准,它源于MJPEG,并在每个JPG 帧中声明帧率等。不太可能很快出现在浏览器中。
最后,我看到图像托管商将大型动画 GIF 替换为 mp4 版本的 GIF 用于演示,加上一些 Javascript 来为下载/不支持的浏览器提供实际的 GIF。
不,JPEG 本身,通过 JFIF,不提供动画 JPG 文件本身的功能,正如 Noldorin 已在所选答案中指出的那样。 :耸肩:
【讨论】:
这是一个 GIF 图片...扩展名已手动更改。浏览器引擎足够聪明,可以确定图像格式,而不管文件扩展名如何。
【讨论】:
var c = 1;
/* Preloading images */
var image1 = new Image();
image1.src = "a1.jpg";
var image2 = new Image();
image2.src = "a2.jpg";
var image3 = new Image();
image3.src = "a3.jpg";
var image4 = new Image();
image4.src = "a4.jpg";
var image5 = new Image();
image5.src = "a5.jpg";
function disp_img(w)
{
if (c == 6)
{
c = 1;
}
var img_src = "a" + c + ".jpg";
document.ani.src = img_src;
c++;
}
t = setInterval("disp_img(c)", 1000);
【讨论】:
No JPEG 不支持动画。保存扩展名为 .jpeg 的 GIF 文件并不意味着它是 JPEG 文件。它仍然是一个 GIF 文件。因为 OS Image viewer 不会查看文件扩展名,而是查看内容。
如果您将该文件作为二进制文件打开(在文本编辑器中),您将看到第一行包含
GIF89ad�d�˜|� 这是 GIF 的 magic number。
【讨论】:
是的, 您可以使用单个 jpeg 制作动画。谷歌“jpeg css sprites”。当然这不会是 jpeg 格式的原生动画支持。
【讨论】:
有点死灵帖子,但由于这个问题在我尝试获取有关像素运动 jpeg 的信息时首先出现,所以这里有一些附加信息。
从 Pixel2 开始,Google 就创建了motion jpeg,这是一个普通的 jpeg,末尾有一个 mp4 视频。 更多信息在这里:
https://android.jlelse.eu/working-with-motion-photos-da0aa49b50c
【讨论】: