使用OSS PHP SDK。 上传图片时,是否可以同时缩放剪裁图片?
$options[OssClient::OSS_PROCESS] = 'image/resize,m_fixed,h_' . $h . ',w_' . $w;
$ossClient->uploadFile($bucket, $file_remote_path, $file_locale_path, [
$options
];
这样上传后图片好像还是原图没变,请问是我写得不对,还是不支持在上传时处理图片?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云的OSS服务确实支持在上传图片时进行图片处理,您所使用的 $options[OssClient::OSS_PROCESS]
方式是正确的配置项来指定图片处理规则。不过,根据您的描述,看起来可能是在使用方法上存在一些小问题。
首先,请确保您设置的 $h
和 $w
变量正确地指定了期望的高度和宽度,并且这些值是有效的整数。此外,当使用 uploadFile
方法时,选项参数应该直接作为第三个参数传递,而不是作为数组的元素。以下是修改后的代码示例:
use OSS\OssClient;
use OSS\Core\OssUtil;
// 初始化OSSClient
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// 指定Bucket名称和Object的完整路径
$bucket = 'your-bucket-name';
$file_locale_path = 'local/path/to/your/image.jpg'; // 本地图片路径
$file_remote_path = 'remote/path/in/oss/image-resized.jpg'; // OSS上的目标路径
// 设置图片处理参数
$h = 100; // 目标高度
$w = 100; // 目标宽度
$imageProcess = 'image/resize,m_fixed,h_' . $h . ',w_' . $w;
// 上传文件并同时处理图片
try {
$ossClient->uploadFile($bucket, $file_remote_path, $file_locale_path, [
OssClient::OSS_PROCESS => $imageProcess
]);
echo "Image uploaded and processed successfully.\n";
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
请检查并调整上述代码中的 $accessKeyId
, $accessKeySecret
, $endpoint
, $bucket
, 以及本地与远程文件路径等信息以匹配您的实际情况。如果问题仍然存在,建议检查是否所有的依赖库都是最新版本,或者尝试捕获异常以获取更详细的错误信息,以便进一步诊断问题所在。