【发布时间】:2016-03-18 19:01:18
【问题描述】:
我有以下方法来生成缩略图。它采用任何尺寸并将其转换为 600 x 450 的图像,居中。
private function generateThumbnail ($ext, $name) {
if ($ext === ".png"){
exec('convert -define png:size=1200x900 '.$this->file.' -thumbnail 600x450^ -gravity center -extent 600x450 '.$name);
exec("optipng -o2 -q " . $name);
} else {
exec('convert -define jpeg:size=1200x900 '.$this->file.' -thumbnail 600x450^ -gravity center -extent 600x450 '.$name);
$img = new Imagick($name);
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(97);
$img->stripImage();
$img->writeImage($name);
$img->destroy();
}
}
从 GIF 生成缩略图时会出现问题。它不会从第一帧生成图像。一个 GIF 只有一张空白图像(透明),另一个有奇怪的颜色/质量。
如何在 GIF 的第一帧居中生成缩略图?
【问题讨论】:
-
只是一个问题,但我想知道为什么你从 Imagemagick 开始使用 exec() 和命令行然后放入 Imagick API。
-
不确定我理解你为什么将命令行与 Imagick 混合,但一般来说,你可以在文件名后面的方括号中指定帧号,所以对于 GIF 的第一帧,你会使用 @ 987654322@.
-
@Bonzo 我不确定您是否可以使用 API 执行命令行操作,因为我在 SO 上使用命令行找到了答案。
标签: php imagemagick imagick