⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit6.pas

📁 Dicom Delphi code 看DICOM图像
💻 PAS
字号:
unit Unit6;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, StrUtils;

type
  TfrmSaveDICOM = class(TForm)
    Label1: TLabel;
    edtSrcImageFile: TEdit;
    GroupBox1: TGroupBox;
    leSOPCUID: TLabeledEdit;
    leSOPIUID: TLabeledEdit;
    leICUID: TLabeledEdit;
    leIVName: TLabeledEdit;
    leSAET: TLabeledEdit;
    Button1: TButton;
    Button2: TButton;
    Bevel1: TBevel;
    Bevel2: TBevel;
    leStudyDate: TLabeledEdit;
    leSeriesDate: TLabeledEdit;
    leImageDate: TLabeledEdit;
    leImageTime: TLabeledEdit;
    leSeriesTime: TLabeledEdit;
    leStudyTime: TLabeledEdit;
    leModality: TLabeledEdit;
    leManufacturer: TLabeledEdit;
    leInstitutionName: TLabeledEdit;
    leCityName: TLabeledEdit;
    leRPName: TLabeledEdit;
    leStudyDescription: TLabeledEdit;
    lePName: TLabeledEdit;
    lePID: TLabeledEdit;
    lePDOB: TLabeledEdit;
    lePSex: TLabeledEdit;
    leStudyIUID: TLabeledEdit;
    leSeriesIUID: TLabeledEdit;
    leStudyID: TLabeledEdit;
    leSeriesNumber: TLabeledEdit;
    leImageNumber: TLabeledEdit;
    Label2: TLabel;
    edtSaveFileName: TEdit;
    cbGrayScale: TCheckBox;
    btnAddFile: TButton;
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btnAddFileClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmSaveDICOM: TfrmSaveDICOM;

implementation

uses Unit1, Unit9;

{$R *.dfm}

procedure TfrmSaveDICOM.Button2Click(Sender: TObject);
begin
  frmSaveDICOM.Close;
end;

procedure TfrmSaveDICOM.FormShow(Sender: TObject);
begin
  Button1.SetFocus;
end;

procedure TfrmSaveDICOM.Button1Click(Sender: TObject);
var
  i : Integer;
  sFN,sTFN : String;
begin
  if (edtSaveFileName.Text<>'') and (edtSrcImageFile.Text<>'') then
  begin
    //Set Information for DICOM File
    Form1.DICOMX1.DICOMSOPClassUID := leSOPCUID.Text;
    Form1.DICOMX1.DICOMSOPInstanceUID := leSOPIUID.Text;
    Form1.DICOMX1.DICOMImplementationClassUID := leICUID.Text;
    Form1.DICOMX1.DICOMImplementationVersionName := leIVName.Text;
    Form1.DICOMX1.DICOMSourceApplicationEntityTitle := leSAET.Text;

    Form1.DICOMX1.DICOMStudyDate := leStudyDate.Text;
    Form1.DICOMX1.DICOMSeriesDate := leSeriesDate.Text;
    Form1.DICOMX1.DICOMImageDate := leImageDate.Text;
    Form1.DICOMX1.DICOMStudyTime := leStudyTime.Text;
    Form1.DICOMX1.DICOMSeriesTime := leSeriesTime.Text;
    Form1.DICOMX1.DICOMImageTime := leImageTime.Text;

    Form1.DICOMX1.DICOMModality := leModality.Text;
    Form1.DICOMX1.DICOMManufacturer := leManufacturer.Text;
    Form1.DICOMX1.DICOMInstitutionName := leInstitutionName.Text;
    Form1.DICOMX1.DICOMCityName := leCityName.Text;
    Form1.DICOMX1.DICOMRefPhyName := leRPName.Text;
    Form1.DICOMX1.DICOMStudyDescrp := leStudyDescription.Text;

    Form1.DICOMX1.DICOMPatientName := lePName.Text;
    Form1.DICOMX1.DICOMPatientID := lePID.Text;
    Form1.DICOMX1.DICOMPatientBirthDate := lePDOB.Text;
    Form1.DICOMX1.DICOMPatientSex := lePSex.Text;

    Form1.DICOMX1.DICOMStudyInstanceUID := leStudyIUID.Text;
    Form1.DICOMX1.DICOMSeriesInstanceUID := leSeriesIUID.Text;
    Form1.DICOMX1.DICOMStudyID := leStudyID.Text;

    try
      Form1.DICOMX1.DICOMSeriesNumber := StrToInt(leSeriesNumber.Text);
      Form1.DICOMX1.DICOMImageNumber := StrToInt(leImageNumber.Text);
    except
      Form1.DICOMX1.DICOMSeriesNumber := 1;
      Form1.DICOMX1.DICOMImageNumber := 1;
    end;

    //Pixel Space
    Form1.DICOMX1.DICOMPixelSpaceHeight := 1;
    Form1.DICOMX1.DICOMPixelSpaceWidth := 1;

    if Pos('*',edtSrcImageFile.Text)<>0 then
    begin
      sTFN := '';
      sFN := edtSrcImageFile.Text + '*';
      //Add files to the list
      for i := 1 to Length(sFN) do
      begin
        if MidBStr(sFN,i,1)='*' then
        begin
          if FileExists(sTFN) then
            Form1.DICOMX1.ImageMultiListAppend(sTFN);
          sTFN := '';
        end
        else
        begin
          sTFN := sTFN + MidBStr(sFN,i,1);
        end;
      end;
      if cbGrayScale.Checked then
        //Start to save GrayScale Multi Slice DICOM file
        Form1.DICOMX1.ImageMultiListConvertToFileAsGray(edtSaveFileName.Text)
      else
        //Start to save RGB Multi Slice DICOM file
        Form1.DICOMX1.ImageMultiListConvertToFile(edtSaveFileName.Text)
    end
    else
    begin
      if Form1.OpenDialog1.FileName<>edtSrcImageFile.Text then
      begin
        //Start to save DICOM File
        if cbGrayScale.Checked then
          //Save as GrayScale DICOM File
          Form1.DICOMX1.ImageSaveToDICOMasGray := edtSaveFileName.Text
        else
          //Save as RGB DICOM File
          Form1.DICOMX1.ImageSaveToDICOM := edtSaveFileName.Text;
      end
      else
      begin
        //Start to Convert Image File to DICOM file
        if cbGrayScale.Checked then
        begin
          //Convert to GrayScale DICOM File
          if Form1.DICOMX1.ConvertFileToDICOMasGray(Form1.OpenDialog1.FileName, Form1.SaveDialog1.FileName) = True then
            Showmessage('Convert Image to DICOM File Success !')
          else
            Showmessage('Convert Image to DICOM File Failed !');
        end
        else
        begin
          //Convert to RGB DICOM File
          if Form1.DICOMX1.ConvertFileToDICOM(Form1.OpenDialog1.FileName, Form1.SaveDialog1.FileName) = True then
            Showmessage('Convert Image to DICOM File Success !')
          else
            Showmessage('Convert Image to DICOM File Failed !');
        end;
      end;

    end;
    //Close Window
    frmSaveDICOM.Close;
  end;
end;

procedure TfrmSaveDICOM.btnAddFileClick(Sender: TObject);
begin
  frmAddImageFile.ShowModal;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -