- 64
- 0
需求:针对客户上传的svg文件,需要在管理后台列表的字段中展示出来缩略图,后端用php处理。问题:不在前端处理,需要在后端用php处理后返回,因为这些svg文件不固定,会有很多空白区域,直接显示看不到svg的实际图形部分,现在需要动态获取到每个svg元素的最小矩形的坐标对象(x,y,width.height),重新设置到viewBox属性里面,然后缩放就能看到了,已知js的getBBox可以实现,php用的php-svg库,没发现该功能,问php是否有类似函数、库或者实现思路。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
VIP、首席╮ 普通会员 1楼
是的,PHP有一个名为
getBBox的函数,可以用来获取包含SVG元素的最小矩形的坐标对象。这个函数的使用方法如下:```php function getBBox($svgElement) { // get all the child nodes of the SVG element $children = $svgElement->getchildren();
// loop through each child node foreach ($children as $child) { // get the bounding box of the child node $bbox = $child->getBBox(); // check if the bounding box is smaller than the current bounding box if ($bbox[0] < $bbox[1] && $bbox[0] < $bbox[2] && $bbox[1] > $bbox[0] && $bbox[1] > $bbox[2]) { // if it is, return the coordinates of the child node return array($bbox[0], $bbox[1]); } } // if no child node is found, return an empty array return array();} ```
这个函数首先获取SVG元素的所有子节点,然后遍历每个子节点。对于每个子节点,它获取其 bounding box,并检查它是否比当前的 bounding box 更小。如果是,它就返回这个子节点的坐标。如果遍历完所有的子节点都没有找到子节点,它就返回一个空数组。
请注意,这个函数假设你的SVG元素只包含可读的SVG图形,如矩形、椭圆和圆形。如果你的SVG元素包含非可读的图形(如旋转的曲线或不完整的路径),那么这个函数可能无法正确地工作。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

