मौसम क्रिकेट ऑपरेशन सिंदूर क्रिकेट स्पोर्ट्स बॉलीवुड जॉब - एजुकेशन बिजनेस लाइफस्टाइल देश विदेश राशिफल लाइफ - साइंस आध्यात्मिक अन्य

How To Create Image Enhancer Tool Website

On: February 9, 2025 11:59 AM
Follow Us:
Image Enhance Tool Website Code
---Advertisement---
4.3/5 - (6 votes)

Html Code

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Image Enhancer - Free Online Photo Quality Tool</title>
    <meta name="description" content="Enhance image quality instantly with AI-powered editing. Improve brightness, contrast, sharpness with real-time preview. Perfect for social media and professional use.">
    
    <!-- Google Analytics (Replace GA-XXXXXX with your ID) -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=GA-XXXXXX"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', 'GA-XXXXXX');
    </script>
    
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="theme-toggle">
        <button id="themeBtn">🌓 Toggle Theme</button>
    </div>
    
    <div class="container">
        <!-- Top Ad -->
        <div class="ad-container">
            [Your Ad Code Here]
        </div>

        <h1>AI Image Enhancer</h1>
        
        <div class="upload-section">
            <input type="file" id="imageInput" accept="image/*" hidden>
            <button id="uploadBtn">📤 Upload Image</button>
            <button id="autoEnhanceBtn">🤖 Auto Enhance</button>
            <button id="downloadBtn">⏬ Download</button>
        </div>

        <div class="comparison-container">
            <div class="image-container">
                <img src="" alt="Original" id="originalImage">
                <img src="" alt="Enhanced" id="enhancedImage">
                <div class="slider"></div>
            </div>
        </div>

        <div class="controls">
            <div class="control-group">
                <button id="rotateLeftBtn">↺ Rotate Left</button>
                <button id="rotateRightBtn">↻ Rotate Right</button>
            </div>
            
            <div class="control-group">
                <label>🔆 Brightness</label>
                <input type="range" id="brightness" min="-100" max="100" value="0">
            </div>
            <div class="control-group">
                <label>🌈 Contrast</label>
                <input type="range" id="contrast" min="-100" max="100" value="0">
            </div>
            <div class="control-group">
                <label>🎨 Saturation</label>
                <input type="range" id="saturation" min="-100" max="100" value="0">
            </div>
            <div class="control-group">
                <label>🔍 Sharpness</label>
                <input type="range" id="sharpness" min="0" max="100" value="0">
            </div>
            
            <div class="control-group">
                <label>📁 Format</label>
                <select id="formatSelect">
                    <option value="png">PNG</option>
                    <option value="jpeg">JPEG</option>
                </select>
            </div>
            
            <button id="resetBtn">🔄 Reset All</button>
        </div>

        <!-- Middle Ad -->
        <div class="ad-container">
            [Your Ad Code Here]
        </div>

        <!-- SEO Article -->
        <article class="seo-content">
            <h2>Free Online Image Quality Enhancement Guide</h2>
            
            <section>
                <h3>Transform Your Photos Instantly</h3>
                <p>Our AI-powered tool helps you enhance images in seconds. Perfect for:</p>
                <ul>
                    <li>Social media content creation</li>
                    <li>E-commerce product photos</li>
                    <li>Professional photography editing</li>
                    <li>Restoring old pictures</li>
                </ul>
            </section>

            <section>
                <h3>How It Works</h3>
                <div class="steps">
                    <div class="step">
                        <div class="step-number">1</div>
                        <h4>Upload</h4>
                        <p>Select any JPG/PNG image from your device</p>
                    </div>
                    <div class="step">
                        <div class="step-number">2</div>
                        <h4>Enhance</h4>
                        <p>Use AI enhancement or manual adjustments</p>
                    </div>
                    <div class="step">
                        <div class="step-number">3</div>
                        <h4>Download</h4>
                        <p>Get HD-quality results instantly</p>
                    </div>
                </div>
            </section>

            <!-- More article sections... -->
        </article>

        <!-- Bottom Ad -->
        <div class="ad-container sticky-ad">
            [Your Ad Code Here]
        </div>
    </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.5.0/fabric.min.js"></script>
    <script src="script.js"></script>
</body>
</html>

CSS Code

:root {
    --primary-color: #00ff9d;
    --background-color: #1a1a1a;
    --text-color: #ffffff;
    --control-bg: #2d2d2d;
    --border-color: #444;
}

[data-theme="light"] {
    --background-color: #f5f5f5;
    --text-color: #1a1a1a;
    --control-bg: #ffffff;
    --border-color: #ddd;
    --primary-color: #007bff;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    transition: 0.3s all;
}

body {
    background: var(--background-color);
    color: var(--text-color);
    font-family: 'Arial', sans-serif;
    line-height: 1.6;
}

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 2rem;
}

h1 {
    text-align: center;
    margin: 2rem 0;
    color: var(--primary-color);
    font-size: 2.5rem;
}

.upload-section {
    display: flex;
    gap: 1rem;
    margin: 2rem 0;
    justify-content: center;
    flex-wrap: wrap;
}

button {
    padding: 1rem 2rem;
    background: var(--primary-color);
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-weight: bold;
    color: var(--background-color);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.comparison-container {
    position: relative;
    width: 100%;
    max-width: 800px;
    margin: 2rem auto;
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 0 30px rgba(0, 255, 157, 0.2);
}

.image-container {
    position: relative;
    width: 100%;
    height: 60vh;
    min-height: 400px;
}

#originalImage,
#enhancedImage {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.slider {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 100%;
    background: var(--primary-color);
    cursor: col-resize;
    z-index: 10;
}

.controls {
    background: var(--control-bg);
    padding: 2rem;
    border-radius: 15px;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 2rem;
    margin: 2rem 0;
}

.seo-content {
    background: var(--control-bg);
    padding: 2rem;
    border-radius: 15px;
    margin: 3rem 0;
}

.seo-content h2 {
    color: var(--primary-color);
    border-bottom: 2px solid var(--primary-color);
    padding-bottom: 1rem;
    margin-bottom: 2rem;
}

.ad-container {
    background: var(--control-bg);
    padding: 1.5rem;
    border-radius: 10px;
    margin: 2rem 0;
    text-align: center;
    border: 1px solid var(--border-color);
}

.sticky-ad {
    position: sticky;
    bottom: 20px;
    background: var(--primary-color);
    color: var(--background-color);
}

@media (max-width: 768px) {
    .container {
        padding: 1rem;
    }
    
    .image-container {
        height: 50vh;
    }
}

Javascript Code

document.addEventListener('DOMContentLoaded', () => {
    // Theme Toggle
    const themeBtn = document.getElementById('themeBtn');
    const body = document.body;
    
    function toggleTheme() {
        const currentTheme = body.getAttribute('data-theme') || 'dark';
        const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
        body.setAttribute('data-theme', newTheme);
        localStorage.setItem('theme', newTheme);
    }
    
    const savedTheme = localStorage.getItem('theme');
    if (savedTheme) body.setAttribute('data-theme', savedTheme);
    themeBtn.addEventListener('click', toggleTheme);

    // Image Processor
    const elements = {
        imageInput: document.getElementById('imageInput'),
        uploadBtn: document.getElementById('uploadBtn'),
        downloadBtn: document.getElementById('downloadBtn'),
        autoEnhanceBtn: document.getElementById('autoEnhanceBtn'),
        originalImage: document.getElementById('originalImage'),
        enhancedImage: document.getElementById('enhancedImage'),
        brightness: document.getElementById('brightness'),
        contrast: document.getElementById('contrast'),
        saturation: document.getElementById('saturation'),
        sharpness: document.getElementById('sharpness'),
        resetBtn: document.getElementById('resetBtn'),
        slider: document.querySelector('.slider'),
        rotateLeftBtn: document.getElementById('rotateLeftBtn'),
        rotateRightBtn: document.getElementById('rotateRightBtn'),
        formatSelect: document.getElementById('formatSelect')
    };

    let state = {
        currentImage: null,
        enhancedCanvas: null,
        isDragging: false,
        rotationAngle: 0
    };

    // Event Listeners
    elements.uploadBtn.addEventListener('click', () => elements.imageInput.click());
    elements.imageInput.addEventListener('change', handleImageUpload);
    elements.slider.addEventListener('mousedown', startDragging);
    document.addEventListener('mousemove', handleDragging);
    document.addEventListener('mouseup', stopDragging);
    elements.resetBtn.addEventListener('click', resetControls);
    elements.autoEnhanceBtn.addEventListener('click', autoEnhance);
    elements.rotateLeftBtn.addEventListener('click', () => rotateImage(-90));
    elements.rotateRightBtn.addEventListener('click', () => rotateImage(90));
    elements.downloadBtn.addEventListener('click', downloadImage);
    
    [elements.brightness, elements.contrast, elements.saturation, elements.sharpness]
        .forEach(control => control.addEventListener('input', updateImage));

    function handleImageUpload(e) {
        const file = e.target.files[0];
        if (!file) return;

        const reader = new FileReader();
        reader.onload = (event) => {
            elements.originalImage.onload = () => {
                initializeImageProcessing(event.target.result);
            };
            elements.originalImage.src = event.target.result;
            elements.enhancedImage.src = event.target.result;
        };
        reader.readAsDataURL(file);
    }

    function initializeImageProcessing(imageSrc) {
        state.enhancedCanvas = new fabric.Canvas(null, {
            width: elements.originalImage.naturalWidth,
            height: elements.originalImage.naturalHeight
        });

        fabric.Image.fromURL(imageSrc, (img) => {
            state.currentImage = img;
            state.enhancedCanvas.add(state.currentImage);
            updateImage();
        });
    }

    function updateImage() {
        if (!state.currentImage) return;

        const filters = [
            new fabric.Image.filters.Brightness({
                brightness: elements.brightness.value / 100
            }),
            new fabric.Image.filters.Contrast({
                contrast: elements.contrast.value / 100
            }),
            new fabric.Image.filters.Saturation({
                saturation: elements.saturation.value
            }),
            new fabric.Image.filters.Convolute({
                matrix: [0, -1, 0, -1, 5, -1, 0, -1, 0],
                opacity: elements.sharpness.value / 100
            })
        ];

        state.currentImage.filters = filters;
        state.currentImage.applyFilters();
        state.enhancedCanvas.renderAll();
        elements.enhancedImage.src = state.enhancedCanvas.toDataURL();
    }

    function autoEnhance() {
        elements.brightness.value = 15;
        elements.contrast.value = 20;
        elements.saturation.value = 25;
        elements.sharpness.value = 30;
        updateImage();
    }

    function rotateImage(degrees) {
        state.rotationAngle += degrees;
        state.currentImage.angle = state.rotationAngle;
        state.enhancedCanvas.renderAll();
        elements.enhancedImage.src = state.enhancedCanvas.toDataURL();
    }

    function downloadImage() {
        if (!state.enhancedCanvas) return;
        
        const tempCanvas = document.createElement('canvas');
        const ctx = tempCanvas.getContext('2d');
        const scaleFactor = 2;
        
        tempCanvas.width = state.enhancedCanvas.width * scaleFactor;
        tempCanvas.height = state.enhancedCanvas.height * scaleFactor;
        ctx.scale(scaleFactor, scaleFactor);
        ctx.drawImage(state.enhancedCanvas.getElement(), 0, 0);
        
        const link = document.createElement('a');
        link.download = `enhanced-image.${elements.formatSelect.value}`;
        link.href = tempCanvas.toDataURL(`image/${elements.formatSelect.value}`, 1.0);
        link.click();
    }

    function resetControls() {
        elements.brightness.value = 0;
        elements.contrast.value = 0;
        elements.saturation.value = 0;
        elements.sharpness.value = 0;
        state.rotationAngle = 0;
        updateImage();
    }

    function startDragging(e) {
        state.isDragging = true;
        document.body.style.cursor = 'col-resize';
    }

    function handleDragging(e) {
        if (!state.isDragging) return;
        const rect = elements.enhancedImage.getBoundingClientRect();
        const x = e.clientX - rect.left;
        const percentage = (x / rect.width) * 100;
        const pos = Math.max(0, Math.min(100, percentage));
        
        elements.enhancedImage.style.clipPath = `inset(0 ${100 - pos}% 0 0)`;
        elements.slider.style.left = `${pos}%`;
    }

    function stopDragging() {
        state.isDragging = false;
        document.body.style.cursor = 'default';
    }
});

Pankaj Kumar

मै काशीनाथ हूँ, और मैं शिक्षा के क्षेत्र में अनुभवी लेखिक हूं। मैं पिछले 5 साल से सरकारी नौकरी और योजनाओं की लेटेस्ट जानकारी आम लोगों तक पहुंचाने का काम कर रही हूं। इस समय में Yojana Information जैसे बड़े प्लेटफ़ॉर्म पर अपना योगदान दे रही हूं।

Join WhatsApp

Join Now

Join Telegram

Join Now

और पढ़ें

Leave a Comment