首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >未知源中心SVG到已知SVG

未知源中心SVG到已知SVG
EN

Stack Overflow用户
提问于 2018-04-28 05:24:25
回答 1查看 84关注 0票数 0

我有一个程序(基于Java)从数据中生成SVG。用户可以上传他们自己的SVG,这样他们就可以用于我在最终SVG图像中使用的图标和标记。

这是如何工作的,我有一个更大的矩形,我取代了SVG提供的.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<svg xmlns="http://www.w3.org/2000/svg" height="176" version="1.1" viewbox="0 0 264 176" width="264">
   <!-- my own stuff -->
   <rect x="50" y="50" width="100" height="100" fill="none" class="placeholder" />
</svg>

现在,我可以用其他SVG替换代码中的rect,并添加宽度和高度属性,这样它就可以扩展。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<svg xmlns="http://www.w3.org/2000/svg" height="500" version="1.1" viewbox="0 0 500 500" width="500">
   <!-- my own stuff -->
   <svg x="50" y="50" width="100" height="100"  version="1.1" xmlns="http://www.w3.org/2000/svg">
    <!-- inner unknown XML -->
    </svg>
</svg>

问题是,如果外部SVG不是正方形(1:1),那么总是会得到水平或垂直方向的偏移量。这可以通过从外部SVG读取viewBox的值来补救,但这些值并不总是存在的。

如果我在Chrome中打开外部SVG,我可以看到宽度和高度的计算值,但是在我的Java代码中,我当然不能访问计算出来的宽度和高度。

我看到的唯一解决方案是强迫用户包含一个viewBox属性。有没有其他解决方案,比如根据元素的(计算)质心定位元素?

EN

回答 1

Stack Overflow用户

发布于 2018-04-28 13:33:30

SVG渲染器用于确定内部大小的完整算法在SVG内容视图的内在大小特性下的规范中,但为了在另一个内嵌svg,可以简化如下:

  • 外部SVG上的xy属性将被忽略
  • 如果外部SVG具有viewBox属性,请使用它。否则,
    • 如果外部SVG至少缺少widthheight中的一个,则假定为100%
    • 如果widthheight位于绝对的字体相对单元中,则将它们解析为用户单元。
    • 如果widthheight以百分比单位表示,请将它们解析为占位符大小的百分比到用户单位。

  • 使用解析值设置viewBox of "0 0 <width> height>"
  • widthheight设置为占位符值
  • preserveAspectRatio设置为在视图端口中定位viewBox
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50077024

复制
相关文章
全局响应返回处理
上代码: import io.github.vampireachao.stream.core.optional.Opp; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server
阿超
2022/08/21
4810
Android 判断是否在通话中
转载请以链接形式标明出处: 本文出自:103style的博客 最后的判断代码: /** * 是否正在电话通话中 */ private boolean phoneIsInUse() { TelephonyManager mTelephonyManager = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE); int state = mTelephonyManager.getCallSt
103style
2022/12/19
1.3K0
浅谈ETag
为什么要使用Etag呢?Etag主要为了解决Last-Modified无法解决的一些问题
Java架构师必看
2021/03/22
1.4K0
HTTP头信息中的参数Etag
服务器如果是集群,不同服务器返回的 Http Header 中的 Etag 参数不一样。如果是图片是程序生成的,我们可以用 no-cache 这些 header 来控制,但如果这些图片是 apache 或 nginx 等呢?
Java架构师必看
2021/03/22
2.1K0
在 Confluence 中启用 HTTP 响应压缩
Confluence 能够支持 HTTP 的 GZip 传输编码。这个意味着 Confluence 将可以把数据压缩后传输给用户,这种配置能够针对不稳定的互联网状态下的传输速度缓慢和不稳定并且能够降低 Confluence 服务器的带宽的消耗。
HoneyMoose
2019/01/30
1.1K0
PyCharm:设置是否在SciView中绘图
https://blog.csdn.net/qq_15969343/article/details/126107252
全栈程序员站长
2022/09/27
3.2K0
PyCharm:设置是否在SciView中绘图
http响应Last-Modified和ETag以及asp.net web api实现
基础知识 1) 什么是”Last-Modified”? 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服
张善友
2018/01/22
8660
【说站】splitlines在python中返回列表
2、返回一个是否包含换行符的列表,如果参数keepends为False,则不包含换行符。
很酷的站长
2022/11/23
2.4K0
在WebFlux中自定义异常响应
在web中可以使用@ControllerAdvice即可编写统一异常响应,在webFlux下则是另一种编写方式。
Diuut
2022/11/22
1.8K0
rem在响应式布局中的应用
最近做了一些响应式的页面,遇到了一些问题,想了些解决方法,在这里总结一下。目前响应式的主流实现方式是百分比布局,加上媒体查询@media screen。关于媒体查询还有媒体查询的一些兼容性问题,网上介绍的很多
用户9127725
2022/08/08
1.6K0
判断某个值是否在多维关联数组中 返回该值的所在的关联数组
public function deep_in_array($value, $array) { foreach($array as $item) { if(!is_array($item)) { if ($item == $value) { return $item; } else { continue; } } i
OwenZhang
2021/12/08
5.2K0
C# 程序在 Docker 中响应 Unix 信号
在 Docker Entry Script 详解中介绍了如何在 shell 脚本中响应 Unix 信号量来实现 Docker 应用优雅的关闭退出, 本文介绍 C# 程序如何在 Docker 中响应 Unix 信号实现优雅的关闭退出。
beginor
2020/08/10
1.6K0
RxJS 在 Angular响应式表单中的使用
FormControl 的 valueChanges 属性和 statusChanges 属性包含了会发出变更事件的可观察对象。 例子
mafeifan
2019/03/04
5.1K0
HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码
HttpServletResponse  和 ServletResponse  都是接口
noteless
2018/09/11
4.3K0
HttpServletResponse   ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码
【DB笔试面试864】在Oracle中,响应文件在什么位置?
1、创建数据库的响应文件:$ORACLE_HOME/assistants/dbca/dbca.rsp
AiDBA宝典
2020/08/27
1.3K0
在bash中检测进程是否正在运行
比如我们启动了一个这样的进程python -m SimpleHTTPServer 8000,我们想检测这个进程是否存在,可以这样。
技术小黑屋
2018/09/04
3.5K0
【JVM】Int类型在栈中是否会被缓存?
在写面试题系列文章中,多次涉及到JVM的内存分布情况,以及方法执行的过程中局部变量的存储变化情况。比如,在此前已经讲解过字符串常量池的初始化及使用情况。
程序新视界
2020/10/26
1K0
【JVM】Int类型在栈中是否会被缓存?
点击加载更多

相似问题

ETag在firebase响应中的含义

20

是否应该在Restlet中手动返回缓存请求(ETag)的304响应?

12

如何在消息的响应中返回有效的ETag?

12

Servlet响应ETag缓存

27

是否有可能使HttpClient在响应中忽略无效的ETag头?

10
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文