将图像上载到WordPress时,会发生以下情况:
检查文件并将其移动到uploads文件夹中的适当位置创建“attachment”类型的帖子。此帖子由上传文件中的元数据填充。对于定义的每个图像大小,将根据该图像大小指定的内容创建原始图像的副本引用该图像的任何代码,默认情况下,使用附件帖子ID而不是URL来执行此操作,您将获得:
原始图像文件是一个“大”图像,是一个“中”图像,是一个“缩略图”,因此您的问题在这些方面没有任何意义。您有一个XY问题,您正试图找出解决方案的解决方案。
与其尝试将图像大小调整为100x100,并得出一个全新的问题,不如问问原始问题的解决方案是什么:
"How do I display an attachment at 100x100 without cropping?"
答案在于图像系统。
在处理图像附件时,用于获取原始图像的API采用大小参数,例如:
the_post_thumbnail(\'medium\');
如果您可以指定自己的尺寸,该怎么办?API允许您传入如下数组:
the_post_thumbnail( array( 100,100 ) );
但这并没有提供100x100的图像,而是提供了现有的最接近的匹配大小,高度和宽度参数为100。它不会返回并为您调整所有内容的大小。
相反,如果我们添加一个新的图像大小,并指定它不使用裁剪,如下所示:
// add_image_size( $name, $width, $height, $crop );
add_image_size( \'Lokis100x100\', 100, 100, false );
然后执行以下操作:
the_post_thumbnail( \'Lokis100x100\' );
你应该得到你想要的。但有一件重要的事情需要注意。WordPress在上传时调整大小。您将需要重新生成这些图像或重新上载图像,以便它能够处理站点上已有的图像。有许多插件可以做到这一点,比如regen缩略图。
我在上面定义的“Lokis100x100”图像大小不会裁剪图像。这意味着如果我上传一个200x100的图像,我将得到一个100x50的图像,缩小到适合指定的尺寸。如果crop设置为true,我会得到一张100x100的图像,上面和下面都被裁剪了。
如果您以某种方式上传图像并存储其URL,这是错误的做法,您应该就此提出一个问题。我建议询问:
“上载图像文件时,我正在存储其URL。如何将其作为附件帖子ID处理?”
至于wp_get_image_editor
您的代码检查函数是否返回错误,但不尝试处理该场景
例如:
$editor = wp_get_image_editor( $avatar_full_path );
if ( ! is_wp_error( $editor ) ) {
...
}
如果
is_wp_error
是
true
? 没有什么这个
$editor
对象将是一个WP\\u错误对象,而不是图像编辑器,它将包含一条消息,告诉您出了什么问题,但由于您没有打印出该消息,所以您不知道它说了什么。这些消息可以非常清楚地知道发生了什么错误,例如您指定的文件不存在、无法读取或无法保存文件