У меня есть пары сложных черно-белых файлов SVG, которые создаются программно.FWIW они представляют две версии конструкции печатной платы.
Вот два примера
https://pastebin.com/uh6TtP0m
https://pastebin.com/MqareMLv
Я пытаюсь сравнить их визуально и, если я применяю фильтр feMatrix длякаждый из этих файлов и их наложение, я могу получить представление о том, как эти два файла отличаются.
Я использовал pan-zoom-svg для увеличения / панорамирования обеих версий вшаг в отдельных делениях, используя эту стратегию, чтобы оба изображения можно было увеличить в одну и ту же интересующую область.
Я хотел бы иметь возможность панорамирования и масштабирования объединенного изображения.Чтобы попытаться добиться этого, я попытался поместить оба svgs с фиксированным атрибутом в таблицу стилей, чтобы сохранить их выравнивание.Включающий div имеет относительный атрибут.Изображения находятся в тегах вставки (я также пробовал тегирование объектов. Обработка изображений с тегами svgs не поддерживается в pan-zoom-svg).
Объединенное изображение делает именно то, что я хочу - я могу панорамировать и масштабировать егооднако, при необходимости, я не могу поместить его в 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>