我遇到了类似的问题:客户网站应该产生更大的拇指。我最终构建了一个带有自定义图像编辑器的插件,如下所示:
require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
function im_add_image_editor($implementations) {
array_unshift($implementations, 'IM_Image_Editor_GD');
return $implementations;
}
add_filter('wp_image_editors', 'im_add_image_editor');
IM_Image_Editor_GD 扩展了 WP_Image_Editor_GD,将 _resize 函数(调用者image_resize_dimensions
)更改为调用它的内部版本,如下所示:
class IM_Image_Editor_GD extends WP_Image_Editor_GD {
public function __destruct() {
parent::__destruct();
}
protected function _resize( $max_w, $max_h, $crop = false ) {
$dims = $this->image_resize_dimensions( $this->size['width'], $this->size['height'], $max_w, $max_h, $crop );
if ( ! $dims ) {
return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions'), $this->file );
}
list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
$resized = wp_imagecreatetruecolor( $dst_w, $dst_h );
imagecopyresampled( $resized, $this->image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
if ( is_resource( $resized ) ) {
$this->update_size( $dst_w, $dst_h );
return $resized;
}
return new WP_Error( 'image_resize_error', __('Image resize failed.'), $this->file );
}
protected function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false) {
// Copied original image_resize_dimensions and changed the test
}
}
希望这对我的英语有所帮助和抱歉!