reSmush.it 是一项免费的图片压缩 API 服务,目前除了上传文件大小限制外,个人使用没有其他任何使用限制,下面来看下如果不用插件的情况下,reSmush 的图片 API 要如何使用。

基础调用
要发起标准调用并接收 JSON 响应,只需调用此 URL 并通过以下任一方式指定图片:
- GET – 参数
img - POST – 参数
img - FILES – 二进制发送的文件
该 Web 服务将返回一个包含压缩图片详细信息的数组,如下所述。
API 输出
reSmush.it 可以返回以下格式的响应:
- JSON(XML 已弃用)
输出数组包含各种信息,例如:
- 源 URL(使用 GET 或 POST 方法时)(参数
src) - 优化后图片的 URL(参数
dest) - 原始文件大小(参数
src_size) - 优化后文件大小(参数
dest_size) - 优化百分比(参数
percent) - 文件将从服务器删除的日期(参数
expires) - 错误代码(参数
error) - 错误描述(参数
error_log)
压缩
自 V1.4.2 起,可以为 JPG 压缩指定优化级别。只需在 GET 方法中添加以下参数:
qlty,值为 0 到 100。默认值为 92。要获得良好的图片质量,该值应高于 90。
使用示例:
curl \ -H "User-Agent: MyCustomUserAgent/1.0" \ -H "Referer: https://example.com" \ "https://api.resmush.it/ws.php?img=https://resmush.it/wp-content/uploads/2024/02/testimage.jpg&qlty=95"
请注意,出于安全原因,在 API 请求中包含 user-agent 和网站地址是强制性的。
EXIF 数据
自 v1.4.21 起,EXIF 数据默认会被移除以减小文件大小。但是,可以通过在 GET 方法中指定以下参数在压缩期间保留这些数据:
exif,值为true。默认值为false。
API 错误
以下是 Web 服务的各种错误列表:
- 301 – 使用了旧的端点。请考虑改用 api.resmush.it。
- 400 – 未提供图片 URL。
- 401 – 无法从 URL 获取图片(通常是本地 URL)。
- 402 – 无法从
$_FILES获取图片(通常是本地 URL)。 - 403 – 指定了禁止的文件格式。仅适用于 JPG、PNG、GIF、TIF 和 BMP 文件。
- 404 – 请求了未知的方法或资源。
- 501 – 内部错误,无法创建本地副本。
- 502 – 提供的图片过大(必须小于 5 MB)。
- 503 – 内部错误,无法连接到用于图片优化的 reSmush.it 服务器。
- 504 – 内部错误,无法从 reSmush.it 服务器检索图片。
兼容性
reSmush.it 与旧的、已停止服务的 Yahoo Smush.it webservice 100% 兼容。你只需将旧的 API 调用 http://www.smushit.com/ysmush.it/ws.php?img= 替换为 reSmush.it webservice URL,其工作方式与 ?img= 完全相同。reSmush.it 已被验证可与 Drupal 模块 ImageAPI Optimize(开发版)和官方 WordPress reSmush.it Image Optimizer 插件完美配合。
实现示例 (PHP)
#1 简单的 PHP 请求(使用 GET 和 JSON 响应)
<?php
define('WEBSERVICE', 'http://api.resmush.it/ws.php?img=');
$s = 'http://www.mywebsite/image.jpg';
// 创建流上下文以包含自定义标头
$context = stream_context_create([
'http' => [
'method' => 'GET',
'header' => "User-Agent: MyCustomUserAgent/1.0\r\n" .
"Referer: https://example.com\r\n"
]
]);
// 使用自定义标头获取数据
$o = json_decode(file_get_contents(WEBSERVICE . $s, false, $context));
if (isset($o->error)) {
die('Error: ' . $o->error);
}
// 输出优化后图片的 URL
echo $o->dest;
#2 PHP 请求(直接向 API 发送文件)。推荐方法!
<?php
$file = '/path/to/myfile.jpg';
$mime = mime_content_type($file);
$info = pathinfo($file);
$name = $info['basename'];
$output = new CURLFile($file, $mime, $name);
$data = array(
"files" => $output,
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://api.resmush.it/?qlty=80');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_USERAGENT, 'MyCustomUserAgent/1.0');
curl_setopt($ch, CURLOPT_REFERER, 'https://example.com');
$result = curl_exec($ch);
if (curl_errno($ch)) {
$result = curl_error($ch);
}
curl_close($ch);
var_dump($result);
请注意,出于安全原因,在 API 请求中包含 user-agent 和网站地址是强制性的。
连接问题?
如果你遇到任何连接问题或错误,请将官方的 IP 加入白名单,然后重试:
- 46.4.70.115
- 176.9.77.187
- 136.243.103.55
- 213.239.204.84
- 144.76.74.20
- 65.109.126.11
- 135.181.240.104
如需包含生成 WebP 和生成 AVIF 的更高级图片优化 API,需要考虑另一款 ShortPixel API。





