PHP图片旋转功能可生效,但无法保存旋转后的状态
解决PHP图片旋转后无法保存状态的问题
你当前的代码仅将旋转后的图片输出到浏览器,并未把修改内容写入原文件,因此刷新页面后图片会恢复原样。另外你之前用的rename($rotate,$filename)无效,是因为$rotate是GD库的图像资源句柄,并非实际文件路径,rename只能操作文件路径,所以这个用法完全错误。
只需修改imagejpeg的调用方式,将旋转后的图像写入原文件即可,以下是修正后的代码:
if ( $_GET['rotate'] == 1 ) { $filename = '/path/to/image/test.jpg'; $degrees = 180; // 加载原图片 $source = imagecreatefromjpeg($filename); // 执行旋转 $rotate = imagerotate($source, $degrees, 0); // 关键步骤:将旋转后的图像保存回原文件 imagejpeg($rotate, $filename); // 可选:输出旋转后的图片到浏览器(如果需要即时看到效果) header('Content-type: image/jpeg'); imagejpeg($rotate); // 释放内存资源 imagedestroy($source); imagedestroy($rotate); exit(); }
注意事项:
- 确保PHP进程拥有对
/path/to/image/目录的写入权限,否则无法覆盖原文件。 - 如果不需要在旋转后立即输出图片,可以去掉
header和第二次imagejpeg调用,直接保存后跳回图片展示页面即可。
内容的提问来源于stack exchange,提问作者I_hate_arrays42
相关产品推荐
相关产品推荐

