Image Format Conversion

Convert images between formats using the CONVERT_FORMAT function for optimization and compatibility

All recipes· image-management· 10 minutesintermediate

Image Format Conversion

Objective

Use AIDB's CONVERT_FORMAT function to convert images between different formats. This enables format optimization for web delivery and compatibility requirements.

Step 1: Create Source Images Table

Create a table for storing original images.

CREATE TABLE source_images (
    id INTEGER PRIMARY KEY,
    filename VARCHAR(255) NOT NULL,
    original_format VARCHAR(10) NOT NULL,
    jpeg_image IMAGE(JPEG),
    png_image IMAGE(PNG),
    webp_image IMAGE(WEBP),
    gif_image IMAGE(GIF),
    bmp_image IMAGE(BMP),
    file_size BIGINT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Step 2: Create Converted Images Table

Create a table for storing format conversions.

CREATE TABLE converted_images (
    id INTEGER PRIMARY KEY,
    source_id INTEGER NOT NULL,
    source_format VARCHAR(10) NOT NULL,
    target_format VARCHAR(10) NOT NULL,
    converted_image_jpeg IMAGE(JPEG),
    converted_image_png IMAGE(PNG),
    converted_image_webp IMAGE(WEBP),
    original_size BIGINT,
    converted_size BIGINT,
    size_reduction_percent DECIMAL(5, 2),
    converted_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (source_id) REFERENCES source_images(id)
);

Step 3: Insert Sample Source Images

Add sample source images.

INSERT INTO source_images (id, filename, original_format, file_size) VALUES
    (1, 'photo_001.png', 'PNG', 5242880),
    (2, 'screenshot_001.bmp', 'BMP', 8388608),
    (3, 'graphic_001.gif', 'GIF', 1048576),
    (4, 'image_001.jpeg', 'JPEG', 2097152),
    (5, 'banner_001.png', 'PNG', 3145728);

Step 4: Convert PNG to JPEG

Convert PNG images to JPEG format.

INSERT INTO converted_images (id, source_id, source_format, target_format, original_size, converted_size)
SELECT
    id,
    id,
    'PNG',
    'JPEG',
    file_size,
    file_size * 0.3
FROM source_images
WHERE original_format = 'PNG';

UPDATE converted_images
SET converted_image_jpeg = CONVERT_FORMAT(
    (SELECT png_image FROM source_images WHERE source_images.id = converted_images.source_id),
    'JPEG'
)
WHERE source_format = 'PNG' AND target_format = 'JPEG';

Step 5: Convert to WebP for Web Optimization

Convert images to WebP for smaller file sizes.

INSERT INTO converted_images (id, source_id, source_format, target_format, original_size, converted_size)
VALUES
    (6, 1, 'PNG', 'WEBP', 5242880, 1310720),
    (7, 4, 'JPEG', 'WEBP', 2097152, 734003),
    (8, 5, 'PNG', 'WEBP', 3145728, 786432);

Step 6: Calculate Size Reduction

Update size reduction percentages.

UPDATE converted_images
SET size_reduction_percent =
    CASE
        WHEN original_size > 0 THEN ((original_size - converted_size) * 100.0 / original_size)
        ELSE 0
    END
WHERE size_reduction_percent IS NULL;

SELECT
    source_format,
    target_format,
    original_size,
    converted_size,
    size_reduction_percent
FROM converted_images
ORDER BY size_reduction_percent DESC;

Step 7: Create Format Conversion Queue

Track pending conversions.

CREATE TABLE conversion_queue (
    id INTEGER PRIMARY KEY,
    source_image_id INTEGER NOT NULL,
    source_format VARCHAR(10) NOT NULL,
    target_format VARCHAR(10) NOT NULL,
    priority INTEGER DEFAULT 5,
    status VARCHAR(20) DEFAULT 'pending',
    queued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    started_at TIMESTAMP,
    completed_at TIMESTAMP,
    error_message TEXT
);

INSERT INTO conversion_queue (id, source_image_id, source_format, target_format, priority) VALUES
    (1, 1, 'PNG', 'JPEG', 1),
    (2, 1, 'PNG', 'WEBP', 2),
    (3, 2, 'BMP', 'JPEG', 1),
    (4, 2, 'BMP', 'PNG', 3),
    (5, 3, 'GIF', 'WEBP', 5);

Step 8: Process Conversion Queue

Update queue status as conversions complete.

-- Mark conversion as in progress
UPDATE conversion_queue
SET status = 'processing',
    started_at = CURRENT_TIMESTAMP
WHERE id = 1;

-- Mark conversion as complete
UPDATE conversion_queue
SET status = 'completed',
    completed_at = CURRENT_TIMESTAMP
WHERE id = 1;

SELECT
    source_format,
    target_format,
    status,
    queued_at,
    completed_at
FROM conversion_queue
ORDER BY priority, queued_at;

Step 9: Format Conversion Statistics

Analyze conversion results.

SELECT
    source_format,
    target_format,
    COUNT(*) as conversion_count,
    AVG(size_reduction_percent) as avg_reduction,
    SUM(original_size - converted_size) as total_savings
FROM converted_images
GROUP BY source_format, target_format
ORDER BY avg_reduction DESC;

Step 10: Best Format for Each Source

Determine optimal target format.

SELECT
    source_format,
    target_format,
    size_reduction_percent,
    'Recommended' as status
FROM converted_images c1
WHERE size_reduction_percent = (
    SELECT MAX(size_reduction_percent)
    FROM converted_images c2
    WHERE c1.source_id = c2.source_id
);

Step 11: Queue Status Summary

Get conversion queue status.

SELECT
    status,
    COUNT(*) as count,
    AVG(CASE
        WHEN completed_at IS NOT NULL AND started_at IS NOT NULL
        THEN 1
        ELSE NULL
    END) as has_timing
FROM conversion_queue
GROUP BY status;

Step 12: Pending High Priority Conversions

Find urgent pending conversions.

SELECT
    cq.id,
    si.filename,
    cq.source_format,
    cq.target_format,
    cq.priority,
    cq.queued_at
FROM conversion_queue cq
INNER JOIN source_images si ON cq.source_image_id = si.id
WHERE cq.status = 'pending'
  AND cq.priority <= 2
ORDER BY cq.priority, cq.queued_at;

Cleanup (Optional)

DROP TABLE IF EXISTS conversion_queue;
DROP TABLE IF EXISTS converted_images;
DROP TABLE IF EXISTS source_images;

Expected Outcomes

  • CONVERT_FORMAT changes image formats
  • Size reductions tracked
  • Conversion queue manages workflow
  • Statistics show optimization gains
  • Best format recommendations available

Format Conversion Guide

From To Typical Reduction Best For
PNG JPEG 60-80% Photos
PNG WEBP 70-85% Web images
BMP JPEG 85-95% Any image
JPEG WEBP 25-35% Web delivery
GIF WEBP 40-60% Animations

Key Concepts Learned

  • CONVERT_FORMAT function usage
  • Size optimization tracking
  • Conversion queue pattern
  • Format comparison analysis
  • Priority-based processing

Tags

sqlintermediateimagesconversionoptimizationai

Run this on your own machine

Install SynapCores Community Edition free, paste the SQL or Cypher above into the bundled web UI, and watch it run.

Download Free CE