我有一对以编程方式生成的复杂黑白 svg 文件。FWIW 它们代表了电路板设计的两个修订版。
这里有两个例子
我试图在视觉上比较它们,如果我对这些文件中的每一个应用一个 feMatrix 过滤器并覆盖它们,我可以获得两个文件的不同之处。
我已经使用 pan-zoom-svg 使用此策略在单独的div 中同步缩放/平移两个版本,以便可以将两个图像放大到相同的感兴趣区域。
我希望能够平移和缩放组合图像。为了实现这一点,我尝试在样式表中放置两个具有固定属性的 svg,以保持它们对齐。封闭的 div 具有相对属性。图像在嵌入标签中(我也尝试过对象标记。pan-zoom-svg 不支持处理标记为 svgs 的图像)。
合并后的图像完全符合我的要求 - 我可以根据需要平移和缩放它,但是我无法将它放在最终网页的 div 中,因为它会溢出。
我不清楚这是我的代码中的缺陷还是 svg-pan-zoom 的限制。对单个而不是两个 svg 副本使用相同的技术可以完美地工作。
我正在以编程方式生成多个修订的比较页面。
两个过滤后的图像都对齐并正确平移和缩放,但是,我似乎无法将它们放在 div 中以与网页的其余部分一起设置它们的样式。
[编辑删除不正确的标记格式隐藏一些文本]
window.onload = function() {
// Expose variable to use for testing
window.zoomBoard = svgPanZoom('#diff', {
zoomEnabled: true,
controlIconsEnabled: true,
});
// Expose variable to use for testing
window.zoomBoard2 = svgPanZoom('#diff2', {
zoomEnabled: true,
controlIconsEnabled: true,
});
zoomBoard.setOnZoom(function(level) {
zoomBoard2.zoom(level)
zoomBoard2.pan(zoomBoard.getPan())
})
zoomBoard.setOnPan(function(point) {
zoomBoard2.pan(point)
})
zoomBoard2.setOnZoom(function(level) {
zoomBoard.zoom(level)
zoomBoard.pan(zoomBoard2.getPan())
})
zoomBoard2.setOnPan(function(point) {
zoomBoard.pan(point)
})
};
.responsivefull {
padding: 5 5px;
width: 100%;
margin: 3px 0;
position: relative;
}
.diff1filter {
filter: url(#f1);
}
.diff2filter {
filter: url(#f2);
}
.lock {
position: fixed;
top: 1px;
right: 3px;
outline: #ddd;
}
<script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.0/dist/svg-pan-zoom.min.js"></script>
<body>
<div class="title">ThermocoupleLogger</div>
<div class="subtitle">F_Cu</div>
<svg width="0" height="0" viewBox="0 0 600 400" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="0%" y="0%" width="100%" height="100%">
<feColorMatrix result="original" id="c1" type="matrix" values="1 0 0 0 0
0 1 0 1 0
0 0 1 1 0
0 0 0 1 0 " />
</filter>
<filter id="f2" x="0%" y="0%" width="100%" height="100%">
<feColorMatrix result="original" id="c2" type="matrix" values="1 0 0 1 0
0 1 0 0 0
0 0 1 0 0
0 0 0 0.5 0" />
</filter>
</defs>
</svg>
<div class="responsivefull">
<embed id="diff" class="diff1filter lock" type="image/svg+xml" src="https://pastebin.com/raw/uh6TtP0m" style="position:absolute;" />
<embed id="diff2" class="diff2filter lock" type="image/svg+xml" src="https://pastebin.com/raw/MqareMLv" style="position:absolute;" />
</div>