网上关于相关系列的文章非常的零散,特别不方便查找,于是查看img2dcm的源码,并将其提取出来作为项目需要,特记录于此。
前提
在dcm文件中,bmp格式图片和jpg格式图片保存方式完全不同,无压缩的bmp图片是直接将像素信息以tag:value的形式存储在dcm文件中,而有压缩的jpg图片则是先将图片的像素点信息插入进DcmPixelSequence中,然后将DcmPixelSequence以tag:value的形式存储在dcm文件中。
具体含义,便用代码分析,边解释。
在具体分析之前,先将主体代码贴下来,如下:
DcmFileFormat *fileFormat = new DcmFileFormat();
DcmDataset *dataSet = fileFormat->getDataset();
I2DImgSource *imgSource = 0;
if(imgName.endsWith("jpg", Qt::CaseInsensitive)) {
imgSource = new I2DJpegSource();
}
else if(imgName.endsWith("bmp", Qt::CaseInsensitive)) {
imgSource = new I2DBmpSource();
}
std::string temp = imgName.toStdString();//注:这句和下一句不可和为一句,否则,转换为char*会失败
const char *value = temp.c_str();
imgSource