Please bookmark this page to avoid losing your image tool!

Image Lullaby For Druzhok Generator

(Free & Supports Bulk Upload)

Drag & drop your images here or

The result will appear here...
You can edit the below JavaScript code to customize the image tool.
function processImage(originalImg, text = "Колыбельная для Дружка", noiseIntensity = 40, glitchIntensity = 10) {
    const canvas = document.createElement('canvas');
    const width = originalImg.width;
    const height = originalImg.height;
    
    canvas.width = width;
    canvas.height = height;
    const ctx = canvas.getContext('2d');

    // Draw the original image onto the canvas
    ctx.drawImage(originalImg, 0, 0);

    // Get image data to apply creepy screamer/creepypasta effects
    const imageData = ctx.getImageData(0, 0, width, height);
    const data = imageData.data;
    const outData = new Uint8ClampedArray(data.length);

    // Calculate High Contrast Factor
    const contrast = 80; 
    const factor = (259 * (contrast + 255)) / (255 * (259 - contrast));

    // Step 1: Apply High Contrast, Grayscale/Red Tint, and TV Static Noise
    for (let i = 0; i < data.length; i += 4) {
        // Adjust contrast
        let r = factor * (data[i] - 128) + 128;
        let g = factor * (data[i+1] - 128) + 128;
        let b = factor * (data[i+2] - 128) + 128;

        // Convert to grayscale
        let gray = 0.299 * r + 0.587 * g + 0.114 * b;
        
        // Apply a creepy dark reddish/rusty tint often used in such memes
        r = gray * 1.5;
        g = gray * 0.6;
        b = gray * 0.6;

        // Generate noise
        const noise = (Math.random() - 0.5) * noiseIntensity * 2;

        outData[i]   = Math.min(255, Math.max(0, r + noise));
        outData[i+1] = Math.min(255, Math.max(0, g + noise));
        outData[i+2] = Math.min(255, Math.max(0, b + noise));
        outData[i+3] = data[i+3]; // Keep original alpha
    }

    // Step 2: Apply a VHS RGB Split / Glitch Effect
    const shiftPixels = Math.floor(width * (glitchIntensity / 1000)); 
    const shiftOffset = 4 * shiftPixels;

    for (let i = 0; i < data.length; i += 4) {
        // Red channel shifted to the left
        if (i + shiftOffset < data.length) {
            data[i] = outData[i + shiftOffset];
        } else {
            data[i] = outData[i];
        }

        // Green channel remains in place
        data[i+1] = outData[i+1];

        // Blue channel shifted to the right
        if (i - shiftOffset >= 0) {
            data[i+2] = outData[i - shiftOffset + 2];
        } else {
            data[i+2] = outData[i+2];
        }
        
        data[i+3] = outData[i+3];
    }

    ctx.putImageData(imageData, 0, 0);

    // Step 3: Add a Dark Creepy Vignette
    const gradient = ctx.createRadialGradient(
        width / 2, height / 2, Math.max(width, height) * 0.2, 
        width / 2, height / 2, Math.max(width, height) * 0.7
    );
    gradient.addColorStop(0, 'rgba(0,0,0,0)');
    gradient.addColorStop(1, 'rgba(0,0,0,0.85)');
    ctx.fillStyle = gradient;
    ctx.fillRect(0, 0, width, height);

    // Step 4: Add Distorted TV Scanlines
    ctx.fillStyle = 'rgba(0, 0, 0, 0.35)';
    for (let y = 0; y < height; y += 4) {
        ctx.fillRect(0, y, width, 1);
    }

    // Step 5: Overlay the Lullaby Text 
    if (text) {
        const fontSize = Math.floor(Math.max(width, height) * 0.07);
        ctx.font = `bold ${fontSize}px "Courier New", Courier, monospace`;
        ctx.textAlign = 'center';
        ctx.textBaseline = 'bottom';
        
        // Add a creepy red glow to the text
        ctx.shadowColor = 'rgba(255, 0, 0, 0.9)';
        ctx.shadowBlur = 20;
        ctx.shadowOffsetX = 0;
        ctx.shadowOffsetY = 0;
        
        const textX = width / 2;
        const textY = height - (height * 0.05);

        // Draw a thick black outline around the letters for readability
        ctx.lineWidth = Math.max(2, fontSize * 0.05);
        ctx.strokeStyle = '#000000';
        ctx.strokeText(text, textX, textY);
        
        // Fill the letters with ghostly white
        ctx.fillStyle = '#ffffff';
        ctx.fillText(text, textX, textY);
    }

    return canvas;
}

Free Image Tool Creator

Can't find the image tool you're looking for?
Create one based on your own needs now!

Description

The Image Lullaby For Druzhok Generator is a specialized tool designed to transform standard images into creepy, horror-themed visuals. It applies several stylistic effects, including high contrast, a dark red tint, TV static noise, and VHS-style RGB color splitting. Additionally, the tool adds atmospheric elements like a dark vignette, scanlines, and customizable text overlays with a glowing effect. This tool is ideal for creators looking to generate ‘creepypasta’ style imagery, horror-themed memes, or glitch art for digital projects.

Leave a Reply

Your email address will not be published. Required fields are marked *