From 73ac6003cafb4d79668f853c0819d2ea88588c2d Mon Sep 17 00:00:00 2001 From: Shana Moore Date: Thu, 7 Nov 2024 12:36:04 -0800 Subject: [PATCH] i876 - Make memory, map, and disk limits in `im_identify` configurable - Added environment variable support for ImageMagick memory, map, and disk limits in the `im_identify` method - Falls back to imagemagick-6-policy.xml defaults if no configuration is provided - Improves flexibility and control over resource usage during image processing --- lib/iiif_print/image_tool.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/iiif_print/image_tool.rb b/lib/iiif_print/image_tool.rb index 6e3c256c..d9ecfdd5 100644 --- a/lib/iiif_print/image_tool.rb +++ b/lib/iiif_print/image_tool.rb @@ -74,7 +74,18 @@ def im_identify_geometry(lines) # @return [Array] lines of output from imagemagick `identify` def im_identify - cmd = "identify -limit memory 8GiB -limit map 16GiB -limit disk 50GiB -format 'Geometry: %G\nDepth: %[bit-depth]\nColorspace: %[colorspace]\nAlpha: %A\nMIME type: %m\n' #{path}" + memory_limit = ENV["IM_MEMORY_LIMIT"] + map_limit = ENV["IM_MAP_LIMIT"] + disk_limit = ENV["IM_DISK_LIMIT"] + + cmd = "identify" + + cmd += " -limit memory #{memory_limit}" if memory_limit.present? + cmd += " -limit map #{map_limit}" if map_limit.present? + cmd += " -limit disk #{disk_limit}" if disk_limit.present? + + cmd += " -format 'Geometry: %G\nDepth: %[bit-depth]\nColorspace: %[colorspace]\nAlpha: %A\nMIME type: %m\n' #{path}" + output, status = Open3.capture2(cmd) Rails.logger.info "Identify command output: #{output}" Rails.logger.info "Identify command status: #{status}"