账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php是否有类似js的getBBox函数功能来获取包含svg元素的最小矩形的坐标对象
    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元素包含非可读的图形(如旋转的曲线或不完整的路径),那么这个函数可能无法正确地工作。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部