QDicomUtility

This commit is contained in:
Krad
2022-02-25 13:18:43 +08:00
parent f79d2b9529
commit de9e6aedc0

View File

@@ -2,8 +2,8 @@
// Created by 87714 on 2021/7/26. // Created by 87714 on 2021/7/26.
// //
#ifndef OMEGAV_QDICOMUITILITY_H #ifndef OMEGAV_QDICOMUTILITY_H
#define OMEGAV_QDICOMUITILITY_H #define OMEGAV_QDICOMUTILITY_H
#include <QtGui/qpixmap.h> #include <QtGui/qpixmap.h>
@@ -15,7 +15,7 @@
#include <dcmtk/dcmdata/dcfilefo.h> #include <dcmtk/dcmdata/dcfilefo.h>
#include <dcmtk/dcmimgle/dcmimage.h> #include <dcmtk/dcmimgle/dcmimage.h>
QPixmap GetImageFormDcmFile(const QString& filepath, int wl, int ww) QPixmap GetImageFormDcmFile(const QString& filepath, int wl, int ww, unsigned short sample)
{ {
DcmRLEDecoderRegistration::registerCodecs(OFFalse, OFTrue);//注册解码器 DcmRLEDecoderRegistration::registerCodecs(OFFalse, OFTrue);//注册解码器
/// register JPEG decompression codecs /// register JPEG decompression codecs
@@ -35,12 +35,22 @@ QPixmap GetImageFormDcmFile(const QString& filepath, int wl, int ww)
bool flag = dcmImage.getWidth() > dcmImage.getHeight(); bool flag = dcmImage.getWidth() > dcmImage.getHeight();
DicomImage* sdcmImage = dcmImage.createScaledImage(w,0,0,1); DicomImage* sdcmImage = dcmImage.createScaledImage(w,0,0,1);
sdcmImage->setWindow(wl, ww); sdcmImage->setWindow(wl, ww);
uchar* data = (uchar*)sdcmImage->getOutputData(8);//按8位的位宽取数据 if (sample==1){
unsigned long size = sdcmImage->getOutputDataSize(8); uchar* data = (uchar*)sdcmImage->getOutputData(8);//按8位的位宽取数据
QImage image(data, sdcmImage->getWidth(), sdcmImage->getHeight(), QImage::Format_Grayscale8);//使用8位深度的灰度图做输出 QImage image(data, sdcmImage->getWidth(), sdcmImage->getHeight(), QImage::Format_Grayscale8);//使用8位深度的灰度图做输出
if (sdcmImage->getHeight() > 100) image = image.scaledToHeight(100); if (sdcmImage->getHeight() > 100) image = image.scaledToHeight(100);
QPainter p(&pixmap); QPainter p(&pixmap);
p.drawPixmap(50 - image.width()/2, 50-image.height()/2, QPixmap::fromImage(image)); p.drawPixmap(50 - image.width()/2, 50-image.height()/2, QPixmap::fromImage(image));
}
//RGB color image
else{
uchar* data = (uchar*)sdcmImage->getOutputData(8);//按8位的位宽取数据
QImage image(data, sdcmImage->getWidth(), sdcmImage->getHeight(), QImage::Format_RGB888);//使用8位深度的灰度图做输出
if (sdcmImage->getHeight() > 100) image = image.scaledToHeight(100);
QPainter p(&pixmap);
p.drawPixmap(50 - image.width()/2, 50-image.height()/2, QPixmap::fromImage(image));
}
// p.save(); // p.save();
} }
@@ -53,4 +63,4 @@ QPixmap GetImageFormDcmFile(const QString& filepath, int wl, int ww)
} }
#endif //OMEGAV_QDICOMUITILITY_H #endif //OMEGAV_QDICOMUTILITY_H