我正在开发一个播客主题,我有一个表单,允许用户上传他们的播客封面艺术。播客封面艺术的尺寸应该在1400×1400和3000×3000以下,因为我们遵守iTunes的规定。
由于如此大的文件会影响网站的页面加载速度,我想将上传的图像调整为较小的大小,例如250×250,以便我们可以使用它在网页上显示。
我用过WP_Image_Editor::resize
函数可调整上载图像的大小,并WP_Image_Editor::save
函数来保存它。它实际上起了作用。我现在有两个不同的图像,具有两个不同的维度。由于我们的许多用户已经发布了带有较大图片的播客,我无法只显示压缩版本。相反i wanna check if a compressed version exists or not and show the image accordingly.
我用过PHP’sfile_exists
函数检查图像的压缩版本。但在压缩图像的情况下,它似乎总是返回false。但我可以通过浏览器输入完整地址来访问它。
file_exists(\'path/to/original_image\'); = true
file_exists(\'path/to/compressed_image\'); = false
我用过
wp_handle_upload
上载原始图像,但
wp_image_editor
类来调整和保存压缩的文件。所以这两个函数肯定有不同之处,导致了这个问题。
我在wordpress上主持了这个节目。当我试图通过FTP 我看不到它们,但可以通过浏览器访问。
你们知道我该怎么克服吗?任何帮助都将不胜感激。
提前谢谢。
编辑-更多信息这是我实际使用的代码,
if ( isset( $_FILES ) && isset( $_FILES[\'podcast_cover\'] ) ) {
// Validating the file extension first,
// And then the Image Mime Type
$image = wp_get_image_editor( $_FILES[\'podcast_cover\'][\'tmp_name\'] );
$size = $image->get_size();
// Validating the size ...
if ( $size[\'width\'] < 1400 ) {
global $registration_errors;
$registration_errors->add( \'podcast_cover\', \'The image should be atleast 1400x1400 in size.\' );
return $this->redirect_back_to_form();
} elseif ($size[\'width\'] > 3000) {
global $registration_errors;
$registration_errors->add( \'podcast_cover\', \'The image should not be over 3000x3000 in size.\' );
return $this->redirect_back_to_form();
}
// Uploading the main one,
$override = [\'test_form\' => false];
$uploaded = wp_handle_upload( $_FILES[\'podcast_cover\'], $override );
// Now compressing and saving the alternative one
$pathinfo = pathinfo( $uploaded[\'url\'] );
$image = wp_get_image_editor( $uploaded[\'url\'] );
$image->resize( 250, 250 );
$image->save( $pathinfo[\'dirname\'] . \'/\' . $pathinfo[\'filename\'] . \'-300x300.\' . $pathinfo[\'extension\'] );
}
These are the images i am referring to actuallyOriginal Image : https://torontopodcaststudio.com/wp-content/uploads/2020/08/my-podcast-cover.jpg
Compressed Image : https://torontopodcaststudio.com/wp-content/uploads/2020/08/my-podcast-cover-300x300.jpg
最合适的回答,由SO网友:Jacob Peattie 整理而成
当我在本地测试站点上使用您的精确代码时,我无法保存调整大小的图像。这是因为您正在将URL传递给wp_get_image_editor() 而不是路径。您还将URL传递给pathinfo()
, 这也需要路径。
$pathinfo = pathinfo( $uploaded[\'url\'] );
$image = wp_get_image_editor( $uploaded[\'url\'] );
上述行需要:
$pathinfo = pathinfo( $uploaded[\'file\'] );
$image = wp_get_image_editor( $uploaded[\'file\'] );
这是因为
file
返回的数组的键
wp_handle_upload()
包含文件的路径,这是上述每个函数所需的路径。
我无法解释为什么您可以在浏览器中访问300x300版本。我测试时没有发生这种情况。它可能是特定于WordPress的东西。com托管环境。