① 核心依赖引入与环境快速搭建

基于dcm4che3

② 读取dicom中的tag数据

public  static Attributes ReadFile(String path)
{
    Attributes attr = null;
    DicomInputStream dis = null;
    File file = new File(path);
    //文件存在时进行读取
    if(file.exists()) {
        try {
            dis = new DicomInputStream(file);
            dis.setIncludeBulkData(DicomInputStream.IncludeBulkData.NO);
            attr = dis.readDataset(-1, Tag.PixelData);
            //关闭dicom流
            dis.close();
        } catch (Exception ex) {
            logger.info(ex.getMessage());
        }
    }
    else
    {
        attr = null;
    }
    return attr;
}

③ DICOM 字符集标识解析原理简述

String charset = getCharacterSet(attr.getString(Tag.SpecificCharacterSet));
getCharacterSet方法:
public static String getCharacterSet(String code) {
logger.info(“dicom原始编码集:{}”, code);
String charset = “GB18030”;
if (code == null){
return charset = “GB18030”;
}

    switch (code) {
        case "ISO_IR 100":
            charset = "GB18030";
            break;
        case "ISO 2022 IR 100":
            charset = "GB18030";
            break;
        case "ISO_IR 101":
        case "ISO 2022 IR 101":
            charset = "GB18030";
            break;
        case "ISO 2022 IR 6":
            charset = "US-ASCII";
            break;
        case "ISO_IR 109":
        case "ISO 2022 IR 109":
            charset = "GB18030";
            break;
        case "ISO_IR 110":
        case "ISO 2022 IR 110":
            charset = "GB18030";
            break;
        case "ISO_IR 13":
        case "ISO 2022 IR 13":
            charset = "JIS_X_201";
            break;
        case "ISO_IR 126":
        case "ISO 2022 IR 126":
            charset = "GB18030";
            break;
        case "ISO_IR 127":
        case "ISO 2022 IR 127":
            charset = "GB18030";
            break;
        case "GB18030":
            charset = "GB18030";
            break;
        case "GBK":
            charset = "GB18030";
            break;
        case "ISO_IR 138":
        case "ISO 2022 IR 138":
            charset = "GB18030";
            break;
        case "ISO_IR 144":
        case "ISO 2022 IR 144":
            charset = "GB18030";
            break;
        case "ISO_IR 148":
        case "ISO 2022 IR 148":
            charset = "GB18030";
            break;
        case "ISO 2022 IR 149":
            charset = "KS_X_1001";
            break;
        case "ISO 2022 IR 58":
            charset = "GB2312";
            break;
        case "ISO 2022 IR 159":
            charset = "JIS_X_212";
            break;
        case "ISO_IR 166":
        case "ISO 2022 IR 166":
            charset = "TIS_620";
            break;
        case "ISO 2022 IR 87":
            charset = "JIS_X_208";
            break;
        case "ISO_IR 192":
            charset = "UTF8";
            break;
    }
    logger.info("dicom转换后编码集:{}", charset);
    return charset;
}

更多推荐