Angel骷髅 2019-12-17 13:53 采纳率: 0%
浏览 516
已结题

急急急 java 实现把bmp转换一个dcm文件,但是生成dcm文件却无法打开,求助.

代码如下


import org.dcm4che3.data.Attributes;
import org.dcm4che3.data.Tag;
import org.dcm4che3.data.VR;
import org.dcm4che3.io.DicomEncodingOptions;
import org.dcm4che3.io.DicomOutputStream;

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;

public class TwoBmp2Dcm {
    private static byte[] buffer = new byte[54];
    private static byte[] buff = new byte[8192];
    private static int imageSize;
    private static DicomEncodingOptions encOpts = DicomEncodingOptions.DEFAULT;

    public static void main(String[] args) throws Exception {
             File file=new File("/Users/zhangdechang/Desktop/txt/timg.bmp");
        File outdcm=new File("/Users/zhangdechang/Desktop/txt/998uuuu.dcm");
        DataInputStream dis=new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
        DicomOutputStream out =new DicomOutputStream(outdcm);
        Attributes attrs=new Attributes();
        Attributes data=new Attributes();
        attrs=addMetaInformation(attrs);
        data=addData(data);
        data=readHeader(data, dis);
        out.writeDataset(attrs, data);
        out.setEncodingOptions(encOpts);
        out.writeHeader(Tag.PixelData, VR.OW, imageSize*2);
        int r;
        while ((r = dis.read(buff)) > 0) {
            out.write(buff, 0, r);
        }
        out.close();
        dis.close();
    }
    public static Attributes readHeader(Attributes attrs ,DataInputStream dis) throws Exception{
        dis.read(buffer,0,54);
        if((buffer[0]&0xff)!=0x42&&(buffer[1]&0xff)!=0x4d){
            throw new Exception("Missing BM segment in Bmp stream");
        }
        int imageRows=byteToInt(buffer,21);
        int imageColumns=byteToInt(buffer,25);
        imageSize=byteToInt(buffer,5)-54;
        int biBitCount=byteTo2Int(buffer,29);
        attrs.setInt (Tag.SamplesPerPixel, VR.US,3);
        attrs.setInt(Tag.Rows, VR.US, imageColumns<0?-imageColumns:imageColumns);
        attrs.setInt(Tag.Columns, VR.US, imageRows);
        attrs.setInt(Tag.BitsAllocated, VR.US,biBitCount );//biBitCount
        attrs.setInt(Tag.BitsStored, VR.US,32);
        attrs.setInt(Tag.HighBit, VR.US, 32);
        attrs.setInt(Tag.PixelRepresentation, VR.US, 0);
        attrs.setString(Tag.PhotometricInterpretation,VR.CS, "MONOCHROME2");  //PALETTE_COLOR       MONOCHROME2
        attrs.setString(Tag.RescaleSlope, VR.DS, "1.0");
        attrs.setString(Tag.RescaleIntercept, VR.DS, "0.0");
        attrs.setString(Tag.PixelSpacing,VR.DS, "0.25/0.25");
        attrs.setInt(Tag.NumberOfFrames, VR.IS, 1);
        return attrs;
    }
    public static Attributes addData(Attributes attrs){
        attrs.setString(Tag.SpecificCharacterSet, VR.CS, "GB18030");
        attrs.setString(Tag.ImageType, VR.CS, "ORIGINAL/PRIMARY/AXIAL");
        attrs.setString(Tag.InstanceCreationDate, VR.DA, "20130013");
        attrs.setString(Tag.InstanceCreationTime, VR.TM, "175827");
        attrs.setString(Tag.SOPClassUID, VR.UI, "1.2.840.10008.5.1.4.1.1.2");
        attrs.setString(Tag.SOPInstanceUID, VR.UI, "1.3.6.1.4.1.30071.6.22744165.4288391077912169.1.3");
        attrs.setString(Tag.StudyDate, VR.DA, "20130803");
        attrs.setString(Tag.AcquisitionDateTime, VR.DT, "20130803000000");
        attrs.setString(Tag.StudyTime, VR.TM, "175532");
        attrs.setString(Tag.AccessionNumber, VR.SH, "0");
        attrs.setString(Tag.Modality, VR.CS, "DX");
        attrs.setString(Tag.Manufacturer, VR.LO, "LargeV");
        attrs.setString(Tag.StudyDescription, VR.LO, "融合扫描图像");
        attrs.setString(Tag.SeriesDescription, VR.LO, "融合扫描图像");
        attrs.setString(Tag.ManufacturerModelName, VR.LO, "HighRes3D");

        attrs.setString(Tag.PatientName, VR.PN, "mmmm");
        attrs.setString(Tag.PatientBirthDate,VR.DA,"19920720");
        attrs.setString(Tag.PatientSex, VR.CS, "F");
        return attrs;
    }
    public static Attributes addMetaInformation( Attributes attrs){
        attrs.setString(Tag.FileMetaInformationVersion, VR.OB, "");
        attrs.setString(Tag.MediaStorageSOPClassUID, VR.UI, "1.2.840.10008.5.1.4.1.1.2");
        attrs.setString(Tag.MediaStorageSOPInstanceUID, VR.UI, "1.3.6.1.4.1.30071.6.22744165.4288391077912169.1.18");
        attrs.setString(Tag.TransferSyntaxUID, VR.UI, "1.2.840.10008.1.2.1");
        attrs.setString(Tag.ImplementationVersionName, VR.SH, "SmartVDicom1.0");
        attrs.setString(Tag.ImplementationClassUID, VR.UI, "1.3.6.1.4.1.30071.6");
        attrs.setString(Tag.SourceApplicationEntityTitle, VR.AE, "");
        return attrs;
    }
    public static int byteToInt(byte[] bi,int end){
        int a=(((int)bi[end]&0xff)<<24)  ;
        int b=(((int)bi[end-1]&0xff)<<16)  ;
        int c=(((int)bi[end-2]&0xff)<<8)  ;
        int d=(int)bi[end-3]&0xff;
        return a+b+c+d;
    }
    public static int byteTo2Int(byte[] bi,int end){

        int c=(((int)bi[end]&0xff)<<8)  ;
        int d=(int)bi[end-1]&0xff;
        return c+d;
    }
}

生成的dcm文件打开报错,无法打开。

图片说明

需要依赖的jar

<dependency>
            <groupId>com.sun.media</groupId>
            <artifactId>clibwrapper_jiio</artifactId>
            <version>1.2-pre-dr-b04</version>
        </dependency>
        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-audit</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-conf-api</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-conf-core</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-conf-core-api</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-conf-dicom</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-core</artifactId>
            <version>5.17.0</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-emf</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-filecache</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-hl7</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-image</artifactId>
            <version>5.17.0</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-json</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che/dcm4che-mime -->
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-mime</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-net</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che/dcm4che-net-audit -->
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-net-audit</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-net-hl7</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che/dcm4che-soundex -->
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-soundex</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcm2dcm</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-dcm2jpg -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcm2jpg</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-dcm2json -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcm2json</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcm2xml</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-dcmdict -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcmdict</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-dcmdir -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcmdir</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcmdump</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-dcmgen -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcmgen</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-dcmqrscp -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcmqrscp</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-dcmvalidate</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-emf2sf -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-emf2sf</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-findscu -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-findscu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-getscu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-hl7pix -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-hl7pix</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-hl7rcv -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-hl7rcv</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-hl7snd -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-hl7snd</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-hl72xml</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-ianscp -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-ianscp</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-ianscu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool.ihe/dcm4che-tool-ihe-modality -->
        <dependency>
            <groupId>org.dcm4che.tool.ihe</groupId>
            <artifactId>dcm4che-tool-ihe-modality</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-jpg2dcm -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-jpg2dcm</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-json2dcm</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-mkkos -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-mkkos</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-movescu -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-movescu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-mppsscp -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-mppsscp</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-mppsscu -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-mppsscu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-prefs2xml -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-prefs2xml</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-qc -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-qc</artifactId>
            <version>3.3.7</version>
        </dependency>

        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-qidors</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-stgcmtscu -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-stgcmtscu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-storescp -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-storescp</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-storescu -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-storescu</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-stowrs -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-stowrs</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-syslog</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-syslogd -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-syslogd</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-wadors -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-wadors</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-wadouri -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-wadouri</artifactId>
            <version>3.3.7</version>
        </dependency>

        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-xml2dcm</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-xml2hl7 -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-xml2hl7</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che.tool/dcm4che-tool-xml2prefs -->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-xml2prefs</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.dcm4che/dcm4che-ws-rs -->
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-ws-rs</artifactId>
            <version>3.3.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.glassfish/javax.json -->
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.json</artifactId>
            <version>1.0.4</version>
        </dependency>
        <dependency>
            <groupId>javax.json</groupId>
            <artifactId>javax.json-api</artifactId>
            <version>1.1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <!--<dependency>-->
            <!--<groupId>log4j</groupId>-->
            <!--<artifactId>log4j</artifactId>-->
            <!--<version>1.2.17</version>-->
        <!--</dependency>-->
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
        </dependency>
        <!-- 倒入jar -->
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-imageio</artifactId>
            <version>5.17.0</version>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-imageio-rle</artifactId>
            <version>5.17.0</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-imageio-opencv</artifactId>
            <version>5.17.0</version>
            <scope>runtime</scope>
        </dependency>
        <!--<dependency>-->
        <!--<groupId>com.sun.media</groupId>-->
        <!--<artifactId>jai_imageio</artifactId>-->
        <!--<version>1.2-pre-dr-b04</version>-->
        <!--<scope>runtime</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>org.dcm4che.tool</groupId>
            <artifactId>dcm4che-tool-common</artifactId>
            <version>3.3.7</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-12-17 22:56
    关注

    因为你是调了一个库去生成的文件,首先应该查这个库的文档,无非就是生成的文件有问题,或者你的查看软件有问题。
    你可以将生成的dcm用16进制编辑器打开,和可以打开的dcm文件比较,看生成是否正确。

    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?