-1

图像存储在与我使用的服务器不同的服务器中。有没有办法使用 php 无损压缩它们,压缩后将图像显示到我的站点,而无需将图像下载到我的服务器并存储它们?我无权访问存储图像的服务器。我只能将它们下载到我的服务器。现在我只是使用图片的 url 将图像加载到我的网站,但 GTmetrix 不断提到无损压缩图像。有什么想法吗?

4

1 回答 1

1

您可以使用类似kraken-php 图像 API的东西来实现您的目标,前提是您可以访问服务器的文件。如果您安装并运行了 composer,您也可以使用它,但同样,您需要以某种方式访问​​服务器。如果您决定访问可以使用其安装页面安装的文件。您可以选择立即在文件中返回请求,也可以将其发布到服务器可以访问的 URL。您的请求可能类似于:

{
    "auth": {
        "api_key": "your-api-key",
        "api_secret": "your-api-secret"
    },
    "url": "http://image-url.com/file.jpg",
    "wait": true
}

您的回复可能类似于:

{
    "success": true,
    "file_name": "file.jpg",
    "original_size": 324520,
    "kraked_size": 165358,
    "saved_bytes": 159162,
    "kraked_url": "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
}

用于设置响应的 PHP 代码可能类似于:

require_once("Kraken.php");

$kraken = new Kraken("your-api-key", "your-api-secret");

$params = array(
    "file" => "/path/to/image/file.jpg",
    "wait" => true,
    "webp" => true,
    "lossy" => false
);

$data = $kraken->upload($params);

您可以像处理普通 JSON 请求一样处理响应,并且可以查询处理后图像的图像 URL。但是,您需要注册他们的 API,这不是免费的。如果您正在寻找功能较少的免费解决方案,您可以查看pngquant。巧合的是,像 Kraken 这样的服务是这样工作的,但是拥有一个强大的系统设置需要更长的时间。同样,您将需要某种形式的服务器访问权限。否则,你真的无能为力。

于 2020-10-19T00:31:10.850 回答