我注意到,如果上传的图像大小与缩略图大小相同,WordPress不会为图像生成缩略图。
为了说明这一点,以下是一个例子:
我有一张尺寸为300x200px
. 我的缩略图在WordPress设置中的大小也是300x200
. 所以,当我上传这张图片时,没有缩略图300x200
将生成大小,因为上载的图像itself 被认为是WordPress的缩略图!
我查到了wp_generate_attachment_metadata()
函数,如果图像大小等于缩略图大小,则决定不裁剪图像。Here 是指向此函数内容的链接。
此函数有一个过滤器,如下所示:
apply_filters( \'wp_generate_attachment_metadata\', $metadata, $attachment_id );
如何使用此函数生成缩略图,无论大小如何?
谢谢
UPDATE 1:
根据@birgire的回答,我已经加入了我的习惯
multi_resize()
问题中的功能:
function multi_resize($sizes) {
$sizes = parent::multi_resize($sizes);
//we add the slug to the file path
foreach ($sizes as $slug => $data) {
$sizes[$slug][\'file\'] = $slug . "/" . $data[\'file\'];
}
return $sizes;
}
我将此函数用于其他目的
this 问题
SO网友:MR0
为了解决这个问题,我在函数中创建了一个自定义行为。php仅限于尚未创建缩略图,且图像大小相同。正如@JackJohansson所解释的,该函数在wp\\u generate\\u attachment\\u元数据过滤器中工作。
add_filter(\'wp_generate_attachment_metadata\', \'same_size_image\');
function same_size_image($meta){
global $_wp_additional_image_sizes;
$file = wp_upload_dir();
$file = trailingslashit($file[\'basedir\']).$meta[\'file\'];
$info = getimagesize($file);
$image = wp_get_image_editor($file);
foreach ($_wp_additional_image_sizes as $label => $op) {
if (!isset($meta[\'sizes\'][$label])) {
$width = $op[\'width\'];
$height = $op[\'height\'];
$new_file_path = preg_replace(\'/\\.(.+$)/\', \'-\'.$width.\'x\'.$height.".$1", $file);
if ($info[0] == $width) $image->save($new_file_path);
}
}
return $meta;
}
SO网友:Jeff82
Wordpress应该在上传到媒体库时自动创建所有指定大小的图像。“指定”是指父主题和/或子主题提供的尺寸,包括:
add_image_size(\'name\', 320, 200);
。。以及任何WP默认值。以上只是为WP创建图像导数的一个简单示例。如果希望它每次都创建指定大小的缩略图,可以在函数中调用它。php(或主题调用的包含文件)。
您是在寻找特定的尺寸,还是只需要100x100的默认尺寸?