优化图像-在PHP中无损压缩图像

问题描述

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

解决方法

您可以使用kraken-php image API之类的工具来实现您的目标,前提是您有权访问服务器的文件。如果已经安装并运行了作曲家,则也可以使用它,但是同样,您需要以某种方式访问​​服务器。如果决定访问文件,则可以使用它们的install page安装。您可以选择立即将请求返回到文件中,也可以将其发布到服务器可以访问的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这样的服务的工作方式,但是要建立一个健壮的系统将花费更长的时间。同样,您将需要某种形式的服务器访问权限。否则,您将无能为力。