多帧图像旋转异常修复

uat_us
caiyiling 2024-06-17 17:03:32 +08:00
parent 43d87e612a
commit b9ee682ace
3 changed files with 75 additions and 53 deletions

View File

@ -162,7 +162,9 @@ export default {
isMove: false isMove: false
}, },
mousePosition: { x: '', y: '', mo: '' }, mousePosition: { x: '', y: '', mo: '' },
markers: { top: '', right: '', bottom: '', left: '' } markers: { top: '', right: '', bottom: '', left: '' },
orientationMarkers: [],
originalMarkers: []
} }
}, },
@ -413,6 +415,7 @@ export default {
this.dicomInfo.location = position this.dicomInfo.location = position
}, },
getOrientationMarker(element) { getOrientationMarker(element) {
console.log('getOrientationMarker')
const enabledElement = cornerstone.getEnabledElement(element) const enabledElement = cornerstone.getEnabledElement(element)
const imagePlane = cornerstone.metaData.get( const imagePlane = cornerstone.metaData.get(
'imagePlaneModule', 'imagePlaneModule',
@ -436,6 +439,7 @@ export default {
if (!markers) { if (!markers) {
return return
} }
this.orientationMarkers = [oppositeColumn, row, column, oppositeRow] this.orientationMarkers = [oppositeColumn, row, column, oppositeRow]
this.originalMarkers = [oppositeColumn, row, column, oppositeRow] this.originalMarkers = [oppositeColumn, row, column, oppositeRow]
this.setMarkers() this.setMarkers()
@ -697,8 +701,11 @@ export default {
}, },
resetRotate() { resetRotate() {
this.orientationMarkers = [...this.originalMarkers] if (this.originalMarkers.length > 0) {
this.setMarkers() this.orientationMarkers = [...this.originalMarkers]
this.setMarkers()
}
var viewport = cornerstone.getViewport(this.canvas) var viewport = cornerstone.getViewport(this.canvas)
viewport.hflip = false viewport.hflip = false
viewport.vflip = false viewport.vflip = false
@ -707,24 +714,26 @@ export default {
}, },
setRotate(hflip, vflip, angle, type) { setRotate(hflip, vflip, angle, type) {
var markers = [...this.orientationMarkers] if (this.orientationMarkers.length > 0) {
if (type === 2) { var markers = [...this.orientationMarkers]
// if (type === 2) {
this.orientationMarkers[1] = markers[3] //
this.orientationMarkers[1] = markers[3]
this.orientationMarkers[3] = markers[1] this.orientationMarkers[3] = markers[1]
} else if (type === 3) { } else if (type === 3) {
// //
this.orientationMarkers[0] = markers[2] this.orientationMarkers[0] = markers[2]
this.orientationMarkers[2] = markers[0] this.orientationMarkers[2] = markers[0]
} else if (type === 4) { } else if (type === 4) {
// 90 // 90
this.orientationMarkers = markers.slice(1, 4).concat(markers[0]) this.orientationMarkers = markers.slice(1, 4).concat(markers[0])
} else if (type === 5) { } else if (type === 5) {
// 90 // 90
this.orientationMarkers = [markers[3]].concat(markers.slice(0, 3)) this.orientationMarkers = [markers[3]].concat(markers.slice(0, 3))
}
this.setMarkers()
} }
this.setMarkers()
var viewport = cornerstone.getViewport(this.canvas) var viewport = cornerstone.getViewport(this.canvas)
if (hflip) viewport.hflip = !viewport.hflip if (hflip) viewport.hflip = !viewport.hflip
if (vflip) viewport.vflip = !viewport.vflip if (vflip) viewport.vflip = !viewport.vflip

View File

@ -162,6 +162,19 @@
<button :title="$t('trials:dicom-show:lens')" class="btn-link" data-tool="Magnify" @click="setToolActive($event,'Magnify')"> <button :title="$t('trials:dicom-show:lens')" class="btn-link" data-tool="Magnify" @click="setToolActive($event,'Magnify')">
<svg-icon icon-class="zoom" style="font-size:20px;" /> <svg-icon icon-class="zoom" style="font-size:20px;" />
</button> </button>
<button :title="$t('trials:reading:button:rotate')" class="btn-link dropdown" data-tool="Rotate">
<svg-icon icon-class="rotate" style="font-size:20px;" />
<div class="dropdown-content">
<div @click.stop="setDicomCanvasRotate(1)">{{ $t('trials:reading:button:rotateDefault') }}</div>
<div @click.stop="setDicomCanvasRotate(2)">{{ $t('trials:reading:button:rotateHorizontal') }}</div>
<div @click.stop="setDicomCanvasRotate(3)">{{ $t('trials:reading:button:rotateVertical') }}</div>
<div @click.stop="setDicomCanvasRotate(4)">{{ $t('trials:reading:button:rotateTurnLeft') }}</div>
<div @click.stop="setDicomCanvasRotate(5)">{{ $t('trials:reading:button:rotateTurnRight') }}</div>
</div>
</button>
<button :title="$t('trials:reading:button:move')" class="btn-link" data-tool="Pan" @click="setToolActive($event,'Pan')">
<svg-icon icon-class="move" style="font-size:20px;" />
</button>
<button :title="$t('trials:reading:button:fitWindow')" class="btn-link" data-tool="fitToWindow" @click="fitToType($event,'fitToWindow')"> <button :title="$t('trials:reading:button:fitWindow')" class="btn-link" data-tool="fitToWindow" @click="fitToType($event,'fitToWindow')">
<svg-icon icon-class="fitToWindow" style="font-size:20px;" /> <svg-icon icon-class="fitToWindow" style="font-size:20px;" />
</button> </button>
@ -169,19 +182,7 @@
<svg-icon icon-class="fitToImage" style="font-size:20px;" /> <svg-icon icon-class="fitToImage" style="font-size:20px;" />
</button> </button>
<!-- <button title="旋转" class="btn-link dropdown" data-tool="Rotate" @click="setToolActive($event,'Rotate')"> --> <!-- <button title="旋转" class="btn-link dropdown" data-tool="Rotate" @click="setToolActive($event,'Rotate')"> -->
<button :title="$t('trials:reading:button:rotate')" class="btn-link dropdown" data-tool="Rotate">
<svg-icon icon-class="rotate" style="font-size:20px;" />
<div class="dropdown-content">
<p @click.stop="setDicomCanvasRotate(1)">{{ $t('trials:reading:button:rotateDefault') }}</p>
<p @click.stop="setDicomCanvasRotate(2)">{{ $t('trials:reading:button:rotateHorizontal') }}</p>
<p @click.stop="setDicomCanvasRotate(3)">{{ $t('trials:reading:button:rotateVertical') }}</p>
<p @click.stop="setDicomCanvasRotate(4)">{{ $t('trials:reading:button:rotateTurnLeft') }}</p>
<p @click.stop="setDicomCanvasRotate(5)">{{ $t('trials:reading:button:rotateTurnRight') }}</p>
</div>
</button>
<button :title="$t('trials:reading:button:move')" class="btn-link" data-tool="Pan" @click="setToolActive($event,'Pan')">
<svg-icon icon-class="move" style="font-size:20px;" />
</button>
</div> </div>
</div> </div>
<!-- 测量标注 --> <!-- 测量标注 -->
@ -886,13 +887,19 @@ export default {
background-color: #323232; background-color: #323232;
min-width: 80px; min-width: 80px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
border: 1px solid #4e4e4e;
padding: 5px; padding: 5px;
} }
.dicom-wrapper .dropdown:hover .dropdown-content { .dicom-wrapper .dropdown:hover .dropdown-content {
display: block; display: block;
} }
.dicom-wrapper .dropdown-content p{ .dicom-wrapper .dropdown-content div{
height: 25px;
line-height: 25px;
cursor:point; cursor:point;
} }
.dicom-wrapper .dropdown-content div:hover{
background-color: #16477b90;
}
</style> </style>

View File

@ -1572,8 +1572,10 @@ export default {
resetViewport() { resetViewport() {
this.toolState.viewportInvert = false this.toolState.viewportInvert = false
this.orientationMarkers = [...this.originalMarkers] if (this.originalMarkers.length > 0) {
this.setMarkers() this.orientationMarkers = [...this.originalMarkers]
this.setMarkers()
}
var image = cornerstone.getImage(this.canvas) var image = cornerstone.getImage(this.canvas)
cornerstone.setViewport( cornerstone.setViewport(
this.canvas, this.canvas,
@ -1689,8 +1691,10 @@ export default {
}, },
resetRotate() { resetRotate() {
this.orientationMarkers = [...this.originalMarkers] if (this.originalMarkers.length > 0) {
this.setMarkers() this.orientationMarkers = [...this.originalMarkers]
this.setMarkers()
}
var viewport = cornerstone.getViewport(this.canvas) var viewport = cornerstone.getViewport(this.canvas)
viewport.hflip = false viewport.hflip = false
viewport.vflip = false viewport.vflip = false
@ -1705,23 +1709,25 @@ export default {
} }
}, },
setRotate(hflip, vflip, angle, type) { setRotate(hflip, vflip, angle, type) {
var markers = [...this.orientationMarkers] if (this.orientationMarkers.length > 0) {
if (type === 2) { var markers = [...this.orientationMarkers]
// if (type === 2) {
this.orientationMarkers[0] = markers[2] //
this.orientationMarkers[2] = markers[0] this.orientationMarkers[0] = markers[2]
} else if (type === 3) { this.orientationMarkers[2] = markers[0]
// } else if (type === 3) {
this.orientationMarkers[1] = markers[3] //
this.orientationMarkers[3] = markers[1] this.orientationMarkers[1] = markers[3]
} else if (type === 4) { this.orientationMarkers[3] = markers[1]
// 90 } else if (type === 4) {
this.orientationMarkers = markers.slice(1, 4).concat(markers[0]) // 90
} else if (type === 5) { this.orientationMarkers = markers.slice(1, 4).concat(markers[0])
// 90 } else if (type === 5) {
this.orientationMarkers = [markers[3]].concat(markers.slice(0, 3)) // 90
this.orientationMarkers = [markers[3]].concat(markers.slice(0, 3))
}
this.setMarkers()
} }
this.setMarkers()
var viewport = cornerstone.getViewport(this.canvas) var viewport = cornerstone.getViewport(this.canvas)
if (hflip) viewport.hflip = !viewport.hflip if (hflip) viewport.hflip = !viewport.hflip
if (vflip) viewport.vflip = !viewport.vflip if (vflip) viewport.vflip = !viewport.vflip