当我上传带有动画的帖子时。gif,缩略图将生成新图像,并且不会保持动画。它会在帖子里保持活力,这很好。它似乎调整了的大小。gif图像并将其转换为静态图像,因为它生成的图像大小与原始文件的大小相同。是否有要添加或删除的代码阻止它为缩略图生成新图像,使其只调整为gif大小?
如何使帖子的缩略图保持动画
2 个回复
SO网友:Robert hue
实际上WordPress渲染上传的图像。因此,如果上载动画gif,它将不会保持动画状态。阅读这篇关于如何克服这些问题的文章。
我还没有读完,但正如Howdy\\u McGee所说,你必须使用一个插件。
SO网友:Tobi G.
可以使用添加筛选器add_filter()
勾引wp_generate_attachment_metadata
要教会Wordpress正确调整gif动画图像的大小,请执行以下操作:
/**
* Filters the generated attachment meta data.
* @param array $metadata An array of attachment meta data.
* @param int $attachment_id Current attachment ID.
* @param string $context Additional context. Can be \'create\' when metadata was initially created for new attachment or \'update\' when the metadata was updated.
* @return array
* @author: gresser 2020-11-26
*/
public function resizeGifs(array $metadata, int $attachment_id, string $context)
{
if (preg_match(\'/\\.gif$/\', $metadata[\'file\'])) {
foreach ($metadata[\'sizes\'] as $image_site) {
$file_path_original = wp_upload_dir()[\'basedir\'] .\'/\'. $metadata[\'file\'];
$imagick = new Imagick($file_path_original);
$imagick = $imagick->coalesceImages();
$width = $image_site[\'width\'];
$height = $image_site[\'height\'];
foreach ($imagick as $frame) {
$frame->cropThumbnailImage($width, $height);
$imagick->setImagePage($width, $height, 0, 0);
}
$imagick = $imagick->deconstructImages();
$file_path_thump = wp_upload_dir()[\'path\'] .\'/\'. $image_site[\'file\'];
$imagick->writeImages($file_path_thump, true);
}
}
return $metadata;
}
结束