Mercurial > hg > orthanc-tests
view Database/Lua/Jpeg2000Conversion.lua @ 665:e024ba9e7768
extended test_rest_find_limit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 11 Jul 2024 21:29:55 +0200 |
parents | b6b207b1de0d |
children |
line wrap: on
line source
-- https://groups.google.com/d/msg/orthanc-users/Rc-Beb42xc8/JUgdzrmCAgAJ 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 = '/tmp/uncompressed-' .. instanceId .. '.dcm' local target = assert(io.open(uncompressed, 'wb')) target:write(dicom) target:close() -- Compress to JPEG2000 using gdcm local compressed = '/tmp/compressed-' .. instanceId .. '.dcm' os.execute('gdcmconv -U --j2k ' .. uncompressed .. ' ' .. compressed) -- Generate a new SOPInstanceUID for the JPEG2000 file, as -- gdcmconv does not do this by itself os.execute('dcmodify --no-backup -m "SOPInstanceUID=' .. tags['SOPInstanceUID'] .. '" ' .. compressed) local source = assert(io.open(compressed, 'rb')) local jpeg2k = source:read("*all") source:close() -- Upload the JPEG2000 file and remove the uncompressed file RestApiDelete('/instances/' .. instanceId) RestApiPost('/instances', jpeg2k) -- Remove the temporary DICOM files os.remove(uncompressed) os.remove(compressed) end end