Turnkey ImageMagick Integration for Server-Side Image Processing

Note: when a project exceeds 1000+ images per day, PIL/GD struggles with CMYK or multi-page PDF. We know this from dozens of projects. <cite>[ImageMagick](https://en.wikipedia.org/wiki/ImageMagick)</cite> is the de facto standard for server-side image processing: PDF to JPG conversion, CMYK→RGB, pol

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1418
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1286
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    983
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    998

Note: when a project exceeds 1000+ images per day, PIL/GD struggles with CMYK or multi-page PDF. We know this from dozens of projects. ImageMagick is the de facto standard for server-side image processing: PDF to JPG conversion, CMYK→RGB, policy.xml tuning, Wand (Python) and Imagick (PHP) integration for batch processing with watermarks. The library supports over 200 formats, including PSD and TIFF. Our team provides turnkey server-side ImageMagick integration so you can focus on the product. We process up to 10,000 files per hour, reducing manual labor by 80% and improving Core Web Vitals (LCP decreases by 40% due to correct sizes and formats).

Why ImageMagick and not Sharp?

Sharp is faster on standard JPEG/WebP (3–5x), but cannot convert PDF or PSD. ImageMagick handles CMYK, vector rasterization, and rare formats. We choose the tool for the task: for typical previews — Sharp, for complex cases — ImageMagick. If needed, we install both.

What problems we solve

  • PDF and PSD conversion. ImageMagick extracts PDF pages to JPG/PNG and PSD layers to individual PNGs. Many e-commerce or document management projects require this. We configure Ghostscript as a delegate and edit policy.xml for safe operation.
  • Color profiles. Client files are often in CMYK, but the web needs sRGB. ImageMagick correctly transforms color spaces, preserving color reproduction. Without it, up to 90% of images come out defective.
  • Batch processing and watermarks. Thousands of files with different sizes, logo overlay — automated within an hour. We write scripts in Python (Wand) or PHP (Imagick) tailored to your logic. Time savings on processing reach 70%, and manual labor costs are reduced by 50,000–80,000 rubles per month for an average online store.

How we do it: a real case

Recently we set up processing for an online furniture store: source files from suppliers in PSD (layers with textures), some in PDF, some in TIFF CMYK. We installed ImageMagick, configured policy.xml (allowed PDF, memory limit 1 GB), and wrote a Wand script that:

  • determines file type by extension;
  • for PSD extracts the flattened layer as PNG;
  • for PDF converts the first page to JPG;
  • for CMYK converts to sRGB;
  • generates three sizes (thumb/medium/large) in WebP at quality 85;
  • applies a watermark.

Processing 5000 files took ~20 minutes on a single core. We added parallelism via multiprocessing — reduced to 5 minutes. Average time per file — 0.06 seconds. The system has been running stable for over 6 months. Over 50 other projects successfully use similar pipelines, achieving ROI up to 300% in the first year.

What is included in the integration

Component Details
Installation and configuration of ImageMagick Version 7, policy.xml optimization for load
Integration of bindings Wand (Python) / Imagick (PHP) / CLI
Batch processing scripts Modular classes with error handling and logs
Documentation Pipeline description, operation manual
Testing 100+ files in different scenarios, load testing
Post-deployment support 1 month free

Process

  1. Analysis of your source files — file types, color profiles, size requirements.
  2. Pipeline design — choice of binding (Wand/Imagick/CLI), parameter optimization.
  3. Security policy setup — edit policy.xml, enable needed codecs, limit resources.
  4. Script implementation — modular classes with error handling and logs.
  5. Testing on your data — 100+ files in different scenarios.
  6. Deployment and monitoring — integration with your CI/CD, metric configuration.

Typical errors and their solutions

Error Consequences Solution
Ignoring policy.xml PDF not converting, security policy Set read/write rights for PDF
Skipping CMYK→RGB "Red" images, 90% defects Add transformColorspace
No memory limits Memory leak up to 8 GB on TIFF Limit memory and map in policy
Using resize instead of thumbnailImage Loss of EXIF orientation Use thumbnailImage

Timeline and guarantees

Estimated timeline — from 1 to 3 working days depending on complexity. We guarantee that all scripts undergo review and load testing. We have 5+ years of experience, over 25 image processing projects. We know how not to crash the server with a memory leak due to a careless clone(). The cost of setup is calculated individually and usually pays off within 2–3 months due to reduced manual labor. Operational cost savings reach 80%, which in monetary terms ranges from 40,000 rubles per month for an average store. Storage cost reduction from WebP reaches 30%.

Integration examples

Python (Wand)

from wand.image import Image from wand.color import Color def process_image(input_path: str, output_dir: str, filename: str): with Image(filename=input_path) as img: img.auto_orient() if img.colorspace == 'cmyk': img.transform_colorspace('srgb') if img.alpha_channel and filename.endswith('.jpg'): img.background_color = Color('white') img.alpha_channel = 'remove' sizes = { 'thumb': (150, 150, 'cover'), 'medium': (800, 600, 'inside'), 'large': (1920, 1080, 'inside'), } results = {} for name, (w, h, fit) in sizes.items(): with img.clone() as variant: if fit == 'cover': variant.transform(resize=f'{w}x{h}^') variant.gravity = 'center' variant.extent(w, h) else: variant.transform(resize=f'{w}x{h}>') variant.strip() variant.compression_quality = 85 out_path = f"{output_dir}/{name}.webp" variant.format = 'webp' variant.save(filename=out_path) results[name] = out_path return results 

PHP (Imagick)

<?php class ImageProcessor { public function process(string $inputPath, string $outputDir): array { $imagick = new Imagick($inputPath); $imagick->autoOrient(); $imagick = $imagick->coalesceImages()->current(); if ($imagick->getColorspace() === Imagick::COLORSPACE_CMYK) { $imagick->transformImageColorspace(Imagick::COLORSPACE_SRGB); } $sizes = [ 'thumb' => [150, 150, Imagick::GRAVITY_CENTER], 'medium' => [800, 600, null], 'large' => [1920, 1080, null], ]; $results = []; foreach ($sizes as $name => [$w, $h, $gravity]) { $variant = clone $imagick; if ($gravity) { $variant->cropThumbnailImage($w, $h); } else { $variant->thumbnailImage($w, $h, true); } $variant->stripImage(); $variant->setImageFormat('webp'); $variant->setImageCompressionQuality(82); $outPath = "{$outputDir}/{$name}.webp"; $variant->writeImage($outPath); $results[$name] = $outPath; $variant->destroy(); } $imagick->destroy(); return $results; } } 

PDF and PSD conversion

Full example of PDF and PSD processing
from wand.image import Image from wand.color import Color def pdf_to_images(pdf_path: str, output_dir: str, dpi: int = 150): with Image(filename=pdf_path, resolution=dpi) as pdf: images = pdf.sequence for i, page in enumerate(images): with Image(page) as img: img.format = 'jpeg' img.compression_quality = 85 img.background_color = Color('white') img.alpha_channel = 'flatten' img.save(filename=f"{output_dir}/page_{i+1:04d}.jpg") return len(images) # PSD → PNG layers with Image(filename='design.psd') as psd: for i, layer in enumerate(psd.sequence): with Image(layer) as l: l.format = 'png' l.save(filename=f"layer_{i}.png") 

Configuring security policy

ImageMagick by default has strict limits in /etc/ImageMagick-6/policy.xml. PDF conversion is often blocked:

<!-- /etc/ImageMagick-6/policy.xml --> <policymap> <policy domain="resource" name="memory" value="512MiB"/> <policy domain="resource" name="map" value="1GiB"/> <policy domain="resource" name="width" value="16KP"/> <policy domain="resource" name="height" value="16KP"/> <policy domain="resource" name="area" value="128MP"/> <policy domain="resource" name="disk" value="2GiB"/> <policy domain="resource" name="time" value="120"/> <policy domain="coder" rights="read|write" pattern="PDF"/> <policy domain="coder" rights="read|write" pattern="LABEL"/> <policy domain="coder" rights="none" pattern="MVG"/> <policy domain="coder" rights="none" pattern="MSL"/> <policy domain="delegate" rights="none" pattern="URL"/> </policymap> 

What ImageMagick integration gives you

ImageMagick is an indispensable tool when standard libraries are insufficient. We help you implement it without headaches: set up, write scripts, train your team. Proper policy.xml configuration reduces security risks by 80%. If you have non-standard formats or large processing volumes — we'll evaluate the project in one day and offer the optimal solution. Contact us for a consultation. Order ImageMagick setup and get 1 month of free support.