Please bookmark this page to avoid losing your image tool!

Love Finding Assistant

(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, heartColor = "#FF3366", hudColor = "#00FFCC", vignetteIntensity = 0.6) {
    const width = originalImg.width;
    const height = originalImg.height;

    // Create main canvas
    const canvas = document.createElement("canvas");
    canvas.width = width;
    canvas.height = height;
    const ctx = canvas.getContext("2d");

    // 1. Draw original image
    ctx.drawImage(originalImg, 0, 0);

    // 2. "Scan" the image to find the optimal location for love
    // We scale down to a temporary canvas to efficiently find the "reddest" spot
    const scanSize = 150;
    const scanCanvas = document.createElement("canvas");
    scanCanvas.width = scanSize;
    scanCanvas.height = scanSize;
    const scanCtx = scanCanvas.getContext("2d");
    scanCtx.drawImage(originalImg, 0, 0, scanSize, scanSize);

    const imgData = scanCtx.getImageData(0, 0, scanSize, scanSize).data;
    let maxScore = 0;
    let foundX = scanSize / 2;
    let foundY = scanSize / 2;

    // Look for the reddest pixel (highest R versus G and B)
    for (let i = 0; i < imgData.length; i += 4) {
        const r = imgData[i];
        const g = imgData[i+1];
        const b = imgData[i+2];

        // Red dominance score
        const score = r - Math.max(g, b);
        if (score > maxScore && score > 20) {
            maxScore = score;
            const pixelIndex = i / 4;
            foundX = pixelIndex % scanSize;
            foundY = Math.floor(pixelIndex / scanSize);
        }
    }

    // Map the found coordinates back to the full resolution image
    const tgX = (foundX + 0.5) * (width / scanSize);
    const tgY = (foundY + 0.5) * (height / scanSize);

    // 3. Draw Vignette to focus on the target (visual assistant effect)
    const vIntensity = Math.min(1, Math.max(0, Number(vignetteIntensity)));
    if (vIntensity > 0) {
        const grad = ctx.createRadialGradient(tgX, tgY, 0, tgX, tgY, Math.max(width, height) * 0.8);
        grad.addColorStop(0, "transparent");
        grad.addColorStop(1, `rgba(0, 0, 0, ${vIntensity})`);
        ctx.fillStyle = grad;
        ctx.fillRect(0, 0, width, height);
    }

    // Relative sizing metric
    const size = Math.max(width, height) * 0.08;

    // 4. Draw Sci-Fi HUD / Love Tracker
    ctx.strokeStyle = hudColor;
    ctx.lineWidth = Math.max(2, width * 0.003);
    
    // Crosshairs
    ctx.beginPath();
    ctx.moveTo(0, tgY);
    ctx.lineTo(tgX - size, tgY);
    ctx.moveTo(tgX + size, tgY);
    ctx.lineTo(width, tgY);
    ctx.moveTo(tgX, 0);
    ctx.lineTo(tgX, tgY - size);
    ctx.moveTo(tgX, tgY + size);
    ctx.lineTo(tgX, height);
    ctx.stroke();

    // Outer Targeting Circle (Dashed)
    ctx.setLineDash([Math.max(5, size * 0.1), Math.max(8, size * 0.15)]);
    ctx.beginPath();
    ctx.arc(tgX, tgY, size * 1.5, 0, Math.PI * 2);
    ctx.stroke();
    
    // Inner Solid Circle
    ctx.setLineDash([]);
    ctx.beginPath();
    ctx.arc(tgX, tgY, size * 0.8, 0, Math.PI * 2);
    ctx.stroke();

    // Targeting Brackets
    const br = size * 1.2;
    const brLen = br * 0.3;
    ctx.beginPath();
    // Top left
    ctx.moveTo(tgX - br + brLen, tgY - br); ctx.lineTo(tgX - br, tgY - br); ctx.lineTo(tgX - br, tgY - br + brLen);
    // Top right
    ctx.moveTo(tgX + br - brLen, tgY - br); ctx.lineTo(tgX + br, tgY - br); ctx.lineTo(tgX + br, tgY - br + brLen);
    // Bottom left
    ctx.moveTo(tgX - br + brLen, tgY + br); ctx.lineTo(tgX - br, tgY + br); ctx.lineTo(tgX - br, tgY + br - brLen);
    // Bottom right
    ctx.moveTo(tgX + br - brLen, tgY + br); ctx.lineTo(tgX + br, tgY + br); ctx.lineTo(tgX + br, tgY + br - brLen);
    ctx.stroke();

    // 5. Draw Glowing Heart right at the "found" location
    ctx.fillStyle = heartColor;
    ctx.shadowColor = heartColor;
    ctx.shadowBlur = size * 0.6;

    ctx.beginPath();
    ctx.moveTo(tgX, tgY - size * 0.2);
    ctx.bezierCurveTo(tgX - size * 0.5, tgY - size * 0.6, tgX - size, tgY + size * 0.2, tgX, tgY + size * 0.8);
    ctx.bezierCurveTo(tgX + size, tgY + size * 0.2, tgX + size * 0.5, tgY - size * 0.6, tgX, tgY - size * 0.2);
    ctx.fill();
    
    // Reset shadow
    ctx.shadowBlur = 0; 

    // 6. Draw Analytical Text Overlay 
    const fontSize = Math.max(12, width * 0.025);
    ctx.font = `bold ${fontSize}px monospace`;
    ctx.textAlign = "left";
    ctx.textBaseline = "middle";
    
    const messages = [
        `> LOVE FINDING ASSISTANT`,
        `> STATUS: SEARCH COMPLETED`,
        `> TARGET COORDS: [${Math.floor(tgX)}, ${Math.floor(tgY)}]`,
        `> Любовь найти непросто...` // "Love is not easy to find..."
    ];

    let textY = fontSize * 1.5;
    messages.forEach((msg, index) => {
        const textObjWidth = ctx.measureText(msg).width;
        
        // Text background for readability
        ctx.fillStyle = "rgba(0, 0, 0, 0.7)";
        ctx.fillRect(fontSize * 0.8, textY - fontSize * 0.8, textObjWidth + fontSize, fontSize * 1.6);
        
        // Text itself
        ctx.fillStyle = hudColor;
        ctx.fillText(msg, fontSize * 1.2, textY);
        
        // Add a "blinking" red dot next to the first line
        if (index === 0) {
            ctx.fillStyle = "#FF0000";
            ctx.beginPath();
            ctx.arc(textObjWidth + fontSize * 2.5, textY, fontSize * 0.4, 0, Math.PI * 2);
            ctx.fill();
        }
        
        textY += fontSize * 1.8;
    });

    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 Love Finding Assistant is a creative image processing tool that applies a sci-fi themed ‘targeting’ effect to your photos. The tool automatically scans your image to identify areas with high red color dominance and applies a stylized head-up display (HUD) overlay, including crosshairs, targeting brackets, and a glowing heart icon at the identified location. It also adds a vignette effect to focus on the target and includes analytical text overlays for a high-tech, futuristic aesthetic. This tool is ideal for users looking to create playful, themed social media content, digital art, or stylized graphics with a sci-fi or romantic twist.

Leave a Reply

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