如何获取特色图片及上传图片的原始尺寸?
获取WordPress上传图片的原始尺寸
你提到用get_option( 'thumbnail_size_w' )和get_option( 'thumbnail_size_h' )能拿到缩略图的150x150尺寸,但full_size_w/h没用——这很正常,因为WordPress里的"full"尺寸默认是不做缩放的,对应的option值默认是0(表示无限制),它不会存储你上传图片的实际原始尺寸。
要获取上传图片的真实原始尺寸,你需要读取图片附件的元数据,而不是全局的尺寸选项。这里给你一个实用的自定义函数:
function get_original_image_size( $attachment_id ) { // 先验证附件ID是否为有效图片 if ( ! wp_attachment_is_image( $attachment_id ) ) { return false; } // 获取附件的元数据(优先从数据库读取) $metadata = wp_get_attachment_metadata( $attachment_id ); // 检查元数据是否包含原始尺寸信息 if ( $metadata && isset( $metadata['width'], $metadata['height'] ) ) { return array( 'width' => $metadata['width'], 'height' => $metadata['height'] ); } // 如果元数据丢失,直接读取图片文件获取尺寸 $file_path = get_attached_file( $attachment_id ); if ( file_exists( $file_path ) ) { $image_info = getimagesize( $file_path ); if ( $image_info ) { return array( 'width' => $image_info[0], 'height' => $image_info[1] ); } } return false; }
使用示例:
假设你有一个图片附件的ID是$image_id,可以这样调用函数获取尺寸:
$original_size = get_original_image_size( $image_id ); if ( $original_size ) { echo "原始图片尺寸:{$original_size['width']}px × {$original_size['height']}px"; } else { echo "无法获取该图片的原始尺寸"; }
额外说明:
wp_get_attachment_metadata()返回的数组中,顶层的width和height就是上传图片的原始尺寸;而sizes子数组里存储的是各种缩略图(比如thumbnail、medium、large)的尺寸信息。- 函数做了双重保障:如果数据库里的元数据意外丢失(比如图片被手动修改但未更新元数据),会直接读取图片文件获取尺寸,兼容性更强。
内容的提问来源于stack exchange,提问作者Tamplix
相关产品推荐
相关产品推荐

