为什么 Google Chrome 将 JPG 图片保存到 WEBP?

fra*_*omi 10 google-chrome jpeg webp

我正在尝试从 Chrome 中保存看起来像是 JPG 图像的内容,但最终总是下载 WEBP 图像。

我在 macOS Catalina (10.15.4) 上使用 Chrome 版本 80.0.3987.163,我正在尝试从网站下载JPG 图像。即使图像 URL 显然有.jpg扩展名,当我点击 CMD+S 或右键单击图像并选择Save image as...我会看到文件系统对话框以保存它时,格式下拉列表设置为Google's WEBP 如下所示

我的猜测是他们在实际上是 WEBP 的图像上使用了 JPG 扩展名,但它具有很大的误导性。那可能吗?有没有办法将图像下载为 JPG?

Ser*_*ndt 17

CDN数据流量减少

WebP是 Google 目前开发的一种图像格式,基于收购 On2 Technologies 获得的技术。

如果HTTP(S) 请求标头中的User-Agent字段显示您使用的是最新的浏览器,内容分发网络 (CDN)服务器可能会以这种新的 WebP 格式提供原始文件或图像,以减少数据流量。尽管如此,这些提供的图像文件将保留其原始文件扩展名;什么是真正的误导和欺骗。.jpg.png

在 GNU/Linux 系统上,一种解决方案是使用wgetcurl命令下载原始图像文件。

多个 Google Chrome 扩展程序提供了一种以另一种图像格式保存 WebP 图像的方法。然而,只有一种扩展是开源软件;这是将图像另存为类型

不过,这个和所有其他类似的扩展都有一个恼人的缺点。在保存之间,这些扩展不会调用保存上一个图像的目录。这可能是也可能不是由于 Google 关于扩展程序的沙盒政策所致。不管怎样,我打开了一个关于它的GitHub 问题

将图像另存为类型

  • @sɐunıɔןɐqɐp 不幸的是,该扩展程序下载了 WEBP 并将其转换为 JPG。 Chrome 不允许您对浏览器的默认 HTML 请求标头执行其他操作。然而,JPG 从一开始就是有损的。如果你想要原始的 JPG,要么将浏览器的 HTML 请求头更改为旧的,要么成长并使用 GNU/Linux 上的“wget”或“curl”命令。 (3认同)
  • 该扩展程序是否下载原始 JPG 还是从 WEBP 转换为 JPG?双重转换最终可能会导致图像数据丢失...... (2认同)

use*_*686 8

文件扩展名与 HTTP 无关:如果服务器说Content-Type: image/webp,那么它是一个 WebP 图像,句号。(与大多数网站.html在其 URL 中不再使用的方式相比,即使它们提供基于 HTML 的网页。)

上传到网站的原始图片是一个JPEG文件;但是,它是通过“内容交付网络”(在本例中为 Akamai)提供给您的。CDN 的工作是托管这些文件并减少网站真实服务器上的负载,但许多 CDN 还提供各种优化功能来为客户端节省带宽——这通常包括重新压缩图像、缩小 JS/CSS 文件等。

Akamai 查看 HTTP 请求的User-Agent标头以猜测您的浏览器支持的最佳格式是什么(尽管奇怪的是,它忽略了Accept标头)并在需要时自动将图像转换为 WebP。URL 保持不变,但响应的Content-Type标头指示新格式。

除了安装“User Agent spoofer”扩展或尝试不同的浏览器之外,您还可以复制 URL 并通过终端使用curlwget工具下载它(macOS 应至少内置其中一个)。CDN 通常会将“非浏览器”工具从 webpification 功能中排除。

curl -Of https://mosaic03.ztat.net/vgs/media/catalog-lg/NI/12/2O/0H/NQ/12/NI122O0HN-Q12@9.jpg
Run Code Online (Sandbox Code Playgroud)