Mercurial > hg > orthanc
view Resources/Samples/Lua/AutomatedJpeg2kCompression.lua @ 2058:43cd2ab060c7
cont OrthancPluginCppWrapper
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 30 Jun 2016 08:20:23 +0200 |
parents | 1c9e99d2bfd2 |
children | e371519d4ac9 |
line wrap: on
line source
-- This sample shows how to use Orthanc to compress on-the-fly any -- incoming DICOM file, as a JPEG2k file. function OnStoredInstance(instanceId, tags, metadata, origin) -- Do not compress twice the same file if origin['RequestOrigin'] ~= 'Lua' then -- Retrieve the incoming DICOM instance from Orthanc local dicom = RestApiGet('/instances/' .. instanceId .. '/file') -- Write the DICOM content to some temporary file local uncompressed = instanceId .. '-uncompressed.dcm' local target = assert(io.open(uncompressed, 'wb')) target:write(dicom) target:close() -- Compress to JPEG2000 using gdcm local compressed = instanceId .. '-compressed.dcm' os.execute('gdcmconv --j2k ' .. uncompressed .. ' ' .. compressed) -- Generate a new SOPInstanceUID for the JPEG2000 file, as -- gdcmconv does not do this by itself os.execute('dcmodify --no-backup -gin ' .. compressed) -- Read the JPEG2000 file local source = assert(io.open(compressed, 'rb')) local jpeg2k = source:read("*all") source:close() -- Upload the JPEG2000 file and remove the uncompressed file RestApiPost('/instances', jpeg2k) RestApiDelete('/instances/' .. instanceId) -- Remove the temporary DICOM files os.remove(uncompressed) os.remove(compressed) end end