在PHP中,使用dicom庫進行DICOM圖像傳輸主要涉及到兩個步驟:DICOM文件的讀取和DICOM圖像的傳輸。以下是一個基本的示例,展示如何使用php-dicom庫讀取DICOM文件并通過HTTP響應將其作為圖像發送給客戶端。
首先,確保已經安裝了php-dicom庫。如果尚未安裝,可以使用Composer進行安裝:
composer require redcap/php-dicom
然后,你可以使用以下代碼來讀取DICOM文件并將其作為圖像發送給客戶端:
<?php
// 引入php-dicom庫
require_once 'vendor/autoload.php';
use RedCap\Dicom\Dicom;
use RedCap\Dicom\Dataset;
use RedCap\Dicom\Network\Http;
// 創建一個HTTP響應對象
$response = new Http();
// 設置響應頭,以告訴瀏覽器發送的是圖像數據
$response->setHeader('Content-Type', 'image/dicom');
// 讀取DICOM文件
$dicom = new Dicom();
$dataset = $dicom->read('path/to/your/dicom/file.dcm');
// 檢查數據集是否為空
if ($dataset === false) {
// 如果數據集為空,則發送一個錯誤響應
$response->setStatus(Http::STATUS_BAD_REQUEST);
$response->setHeader('Content-Type', 'text/plain');
$response->send('Error reading DICOM file.');
exit;
}
// 將數據集轉換為JPEG格式的圖像數據
$jpegData = $dataset->toJPEG();
// 檢查JPEG數據是否存在
if ($jpegData === false) {
// 如果JPEG數據不存在,則發送一個錯誤響應
$response->setStatus(Http::STATUS_INTERNAL_SERVER_ERROR);
$response->setHeader('Content-Type', 'text/plain');
$response->send('Error converting DICOM to JPEG.');
exit;
}
// 發送JPEG圖像數據作為響應
$response->send($jpegData);
請注意,上述代碼示例假設你已經將php-dicom庫的vendor
目錄添加到了項目的根目錄下,并且將path/to/your/dicom/file.dcm
替換為你要讀取的DICOM文件的實際路徑。此外,代碼示例還處理了可能出現的錯誤情況,例如DICOM文件讀取失敗或轉換為JPEG失敗的情況。