You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取特色图片及上传图片的原始尺寸?

获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:05:06