上面的jpg图像是如何动画的?据我所知jpg
格式不支持动画。
答案 0 :(得分:39)
不,JPEG文件格式没有固有的动画支持。
您链接的图片实际上是一个伪装有jpg
文件扩展名的动画GIF。 (在这种情况下,浏览器显然忽略了MIME类型并查看文件头字节。)
答案 1 :(得分:13)
如果您在firefox中查看图像,可以右键单击它并选择属性:
您会看到Type: GIF image (animated, 54 frames)
因此,它是一个已重命名为.jpg的gif图像。
答案 2 :(得分:5)
为了完整起见,我想指出那里有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版本的GIF代替大型动画GIF进行演示,还有一些Javascript用于下载/不支持浏览器的实际GIF。
不,JPEG本身,通过JFIF,不提供设置本身动画JPG文件的工具,就像在所选答案中已经注明Noldorin一样。 :耸肩:
答案 3 :(得分:4)
这是一张GIF图片......扩展程序已手动更改。无论文件扩展名如何,浏览器引擎都足够智能地确定图像格式。
答案 4 :(得分:4)
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);
答案 5 :(得分:2)
如果您将该文件打开为二进制文件(在文本编辑器中),您将看到第一行包含
GIF89add˜|
GIF的magic number是哪个。
答案 6 :(得分:1)
是, 你可以使用单个jpg制作动画。谷歌“jpeg css sprites”。当然这不是jpeg格式的原生动画支持。
答案 7 :(得分:1)
JPG无法设置动画。您要么看到了一系列用javascript渲染的JPG图像,要么看到了一个名为JPG的GIF文件。即使将错误的扩展名添加到了文件名,Web服务器和浏览器仍可能识别出正确的GIF文件类型。
如果您打开图像文件,并且使用十六进制编辑器将其作为一种GIF格式,则会看到以下4 bytes
,表示该图像类型为GIF。
答案 8 :(得分:0)
有点死灵贴,但是当我尝试获取有关像素运动jpeg的信息时,这个问题首先出现了,因此这里有一些其他信息。
自Pixel2起,Google创建了运动jpeg,这是一个普通的jpeg,末尾有mp4视频。 此处的更多信息:
https://android.jlelse.eu/working-with-motion-photos-da0aa49b50c