PHPackages                             aurabx/dcmtk-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. aurabx/dcmtk-php

ActiveLibrary

aurabx/dcmtk-php
================

DCMTK support for PHP

2.0.0(5mo ago)10MITPHPPHP ^8.3

Since Dec 15Pushed 5mo ago1 watchersCompare

[ Source](https://github.com/aurabx/dcmtk-php)[ Packagist](https://packagist.org/packages/aurabx/dcmtk-php)[ RSS](/packages/aurabx-dcmtk-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

dcmtk-php
=========

[](#dcmtk-php)

A PHP wrapper for [DCMTK](https://dicom.offis.de/dcmtk.php.en) (DICOM Toolkit), providing utilities for working with DICOM medical imaging files.

This is a modernized fork of [class\_dicom.php](https://github.com/vedicveko/class_dicom.php) by Dean Vaughan, updated for PHP 8.3+ and maintained by [Aurabox](https://aurabox.cloud).

Requirements
------------

[](#requirements)

- PHP 8.3 or higher
- DCMTK binaries installed and accessible
- (Optional) ffmpeg for video conversion

Installation
------------

[](#installation)

### 1. Install DCMTK

[](#1-install-dcmtk)

**macOS (Homebrew):**

```
brew install dcmtk
```

**Ubuntu/Debian:**

```
sudo apt-get install dcmtk
```

**Windows:**Download from [DCMTK releases](https://dicom.offis.de/dcmtk.php.en) and add to PATH.

### 2. Install via Composer

[](#2-install-via-composer)

```
composer require aurabx/dcmtk-php
```

Configuration
-------------

[](#configuration)

The library auto-detects DCMTK binaries in common locations (`/opt/homebrew/bin`, `/usr/local/bin`). To specify a custom path:

**Environment variable:**

```
export DCMTK_PATH=/path/to/dcmtk/bin
```

**Or in PHP:**

```
use Aurabx\Dcmtkphp\Config;

Config::set('dcmtk-path', '/custom/path/to/dcmtk');
```

Usage
-----

[](#usage)

### Reading DICOM Tags

[](#reading-dicom-tags)

```
use Aurabx\Dcmtkphp\Tag;

$tag = new Tag();
$tag->setFilePath('/path/to/image.dcm');

// Get specific tags
$patientName = $tag->getTag('0010', '0010');  // Patient Name
$modality = $tag->getTag('0008', '0060');     // Modality
$studyDate = $tag->getTag('0008', '0020');    // Study Date

// Access all tags
$allTags = $tag->tags;
```

### Writing DICOM Tags

[](#writing-dicom-tags)

```
use Aurabx\Dcmtkphp\Tag;

$tag = new Tag();
$tag->setFilePath('/path/to/image.dcm');

$tag->writeTags([
    '0010,0010' => 'DOE^JOHN',      // Patient Name
    '0010,0020' => '12345',          // Patient ID
    '0008,0080' => 'Hospital Name',  // Institution Name
]);
```

### Converting DICOM to JPEG

[](#converting-dicom-to-jpeg)

```
use Aurabx\Dcmtkphp\Convert;

$convert = new Convert();
$convert->file = '/path/to/image.dcm';
$convert->jpg_quality = 90;  // 0-100

$jpegPath = $convert->dcmToJpg();
```

### Creating Thumbnails

[](#creating-thumbnails)

```
use Aurabx\Dcmtkphp\Convert;

$convert = new Convert();
$convert->file = '/path/to/image.dcm';
$convert->tn_size = 150;  // Width in pixels

$thumbnailPath = $convert->dcmToThumbnail();
```

### Compression/Decompression

[](#compressiondecompression)

```
use Aurabx\Dcmtkphp\Convert;

$convert = new Convert();
$convert->file = '/path/to/image.dcm';

// Decompress JPEG-compressed DICOM
$convert->uncompress();

// Compress to JPEG lossless
$convert->compressToJpeg();
```

### DICOM Network Operations

[](#dicom-network-operations)

#### C-ECHO (DICOM Ping)

[](#c-echo-dicom-ping)

```
use Aurabx\Dcmtkphp\Net;

$net = new Net();
$result = $net->echoscu('pacs.hospital.com', 104, 'MY_AE_TITLE', 'REMOTE_AE');
```

#### C-STORE (Send DICOM)

[](#c-store-send-dicom)

```
use Aurabx\Dcmtkphp\Net;

$net = new Net();
$net->setFilePath('/path/to/image.dcm');

// Send single file
$net->sendDcm('pacs.hospital.com', 104, 'MY_AE', 'REMOTE_AE');

// Send all files in directory
$net->sendDcm('pacs.hospital.com', 104, 'MY_AE', 'REMOTE_AE', true);
```

#### Store SCP (Receive DICOM)

[](#store-scp-receive-dicom)

```
use Aurabx\Dcmtkphp\Net;

$net = new Net();
$net->storeServer(
    dcm_dir: '/path/to/storage',
    ae_name: 'MY_PACS',
    port: 104
);
```

### Validating DICOM Files

[](#validating-dicom-files)

```
use Aurabx\Dcmtkphp\DcmtkPhp;

$dcmtk = new DcmtkPhp();
$isDicom = $dcmtk->isDicom('/path/to/file');
```

API Reference
-------------

[](#api-reference)

### Tag Class

[](#tag-class)

MethodDescription`setFilePath(string $file)`Set the DICOM file to work with`loadTags(bool $uidNames = true)`Load all tags from the file`getTag(string $group, string $element)`Get a specific tag value`writeTags(array $tags)`Write tags to the file### Convert Class

[](#convert-class)

MethodDescription`dcmToJpg()`Convert DICOM to JPEG`dcmToThumbnail()`Create a thumbnail`uncompress(string $newFile = '')`Decompress JPEG DICOM`compressToJpeg(string $newFile = '')`Compress to JPEG lossless`multiFrameToVideo(string $format, int $framerate)`Convert multi-frame to video### Net Class

[](#net-class)

MethodDescription`echoscu(string $host, int $port, ...)`DICOM echo (ping)`sendDcm(string $host, int $port, ...)`Send DICOM file(s)`storeServer(string $dcmDir, ...)`Start a DICOM storage serverTesting
-------

[](#testing)

```
composer install
vendor/bin/phpunit
```

Tests use mocked command execution and don't require DCMTK binaries.

License
-------

[](#license)

MIT License - see [licence.txt](licence.txt)

Credits
-------

[](#credits)

- Original [class\_dicom.php](https://github.com/vedicveko/class_dicom.php) by Dean Vaughan
- [DCMTK](https://dicom.offis.de/dcmtk.php.en) by OFFIS

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance73

Regular maintenance activity

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

154d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/996e93220fb89bfaaa8bafad3ec296da3e6bb40acfcc2701fc8a7ed491848885?d=identicon)[xtfer](/maintainers/xtfer)

---

Top Contributors

[![xtfer](https://avatars.githubusercontent.com/u/40190?v=4)](https://github.com/xtfer "xtfer (12 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/aurabx-dcmtk-php/health.svg)

```
[![Health](https://phpackages.com/badges/aurabx-dcmtk-php/health.svg)](https://phpackages.com/packages/aurabx-dcmtk-php)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
