php - imagick 只保存 gif 的第一帧
问题描述
我正在尝试制作一个安全的文件上传实用程序。这是处理图像清理的代码的一部分:所有元数据都被删除。目前其中一个令人讨厌的错误是它会破坏 .gif 文件:只有第一帧被保存。有人知道为什么吗?
function imageStripSaveAs($source, $dest){
$image = new \Imagick(realpath($source));
// apply orientation
$orientation = $image->getImageOrientation();
switch($orientation) {
case imagick::ORIENTATION_BOTTOMRIGHT:
$image->rotateimage("#000", 180); // rotate 180 degrees
break;
case imagick::ORIENTATION_RIGHTTOP:
$image->rotateimage("#000", 90); // rotate 90 degrees CW
break;
case imagick::ORIENTATION_LEFTBOTTOM:
$image->rotateimage("#000", -90); // rotate 90 degrees CCW
break;
}
// get profiles
$profiles = $image->getImageProfiles("icc", true);
// strip all metadata
$image->stripImage();
// re-apply profiles
if(!empty($profiles)){
$image->profileImage("icc", $profiles['icc']);
}
if ($format == 'GIF') {
// ???
$image->writeImages($dest, true);
} else {
$image->writeImage($dest);
}
$image->clear();
return true;
}
解决方案
推荐阅读
- python - Python 请求 SSLCertVerificationError 的问题
- unity3d - Unity,在不同的场景中不断播放音乐
- docker - 如何将管理员 docker 容器与 mariadb docker 容器连接?
- reactjs - API 调用后的套接字事件未在 React 应用程序中正确记录数据
- node.js - Discord 机器人没有响应命令
- java - 运行单个 java 线程比 main 快?
- time - 使用有符号值表示时间的基本原理是什么?
- javascript - 尝试在嵌套函数中构建嵌套函数
- jena - 图形序列化(空白节点标签)
- git - Git '一切都是最新的'再次推送