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

PDFlib PHP如何设置固定高度、宽度动态适配的图片boxsize参数

解决方案

你可以在加载图片后先获取原图的宽高属性,按固定高度65等比例计算适配宽度,再动态生成boxsize参数即可,不会出现图片变形,也能保证所有图片高度统一。

具体实现逻辑:

  • 调用$p->info_image()方法获取加载后图片的原始宽、高数值
  • 按比例计算匹配固定高度的图片宽度:适配宽度 = 65 * (原始宽度 / 原始高度)
  • 将计算得到的宽度和固定高度65拼接为boxsize参数传入fit_image即可

修改后代码示例:

foreach ($awardImages as $awardImage) {
    $image = $p->load_image('auto', $awardImage, '');
    if (0 == $image) {
        echo "Couldn't load $image: ".$p->get_errmsg();
        exit(1);
    }

    // 新增逻辑:获取原图宽高,计算适配的boxsize参数
    $oriWidth = $p->info_image($image, "width", "");
    $oriHeight = $p->info_image($image, "height", "");
    $fitWidth = 65 * ($oriWidth / $oriHeight);
    $boxsizeStr = "boxsize={$fitWidth} 65";

    if ($x > (565 - 70)) {
        $y = $y - 65;
        $x = $elementStartLeft + 2;
    }

    // 替换原来硬编码的boxsize参数
    $buf = $boxsizeStr . ' fitmethod=auto showborder position={left center} matchbox={name=awardimage}';
    $p->fit_image($image, $x, $y, $buf);
    ++$awardNo;
    $awardX2 = $p->info_matchbox('awardimage', $awardNo, 'x2');
    $x = $awardX2 + 5;
    // 可选:释放图片资源降低内存占用
    $p->close_image($image);
}

如果有特殊限制需要控制图片最大宽度,可在计算适配宽度后加一层判断,超出最大宽度时按最大宽度反向等比例缩小高度即可,无相关需求可忽略该逻辑

内容的提问来源于stack exchange,提问作者strayed soul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:09