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
相关产品推荐
相关产品推荐

