元素配合JavaScript的File API可以实现图片上传功能。通过监听change事件获取用户选择的图片文件。…">
当前位置:首页 > JavaScript

js 实现图片功能实现

2026-03-01 00:24:44JavaScript

图片上传功能实现

使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。通过监听change事件获取用户选择的图片文件。

<input type="file" id="imageUpload" accept="image/*">
document.getElementById('imageUpload').addEventListener('change', function(event) {
    const file = event.target.files[0];
    if (file) {
        const reader = new FileReader();
        reader.onload = function(e) {
            const img = document.createElement('img');
            img.src = e.target.result;
            document.body.appendChild(img);
        };
        reader.readAsDataURL(file);
    }
});

图片预览功能

在用户选择图片后立即显示预览,可以使用URL.createObjectURL()方法生成临时URL。

const imageUpload = document.getElementById('imageUpload');
const preview = document.getElementById('preview');

imageUpload.addEventListener('change', function() {
    const file = this.files[0];
    if (file) {
        preview.src = URL.createObjectURL(file);
        preview.style.display = 'block';
    }
});

图片压缩处理

使用Canvas API可以对图片进行压缩处理,适合上传前优化图片大小。

function compressImage(file, quality, callback) {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = function(event) {
        const img = new Image();
        img.src = event.target.result;
        img.onload = function() {
            const canvas = document.createElement('canvas');
            const ctx = canvas.getContext('2d');
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
            canvas.toBlob(callback, 'image/jpeg', quality);
        };
    };
}

图片裁剪功能

使用第三方库如cropper.js可以方便地实现图片裁剪功能。

import Cropper from 'cropperjs';

const image = document.getElementById('imageToCrop');
const cropper = new Cropper(image, {
    aspectRatio: 1,
    viewMode: 1,
    autoCropArea: 0.8,
    responsive: true,
    guides: true
});

document.getElementById('cropBtn').addEventListener('click', function() {
    const croppedCanvas = cropper.getCroppedCanvas();
    document.getElementById('result').appendChild(croppedCanvas);
});

图片滤镜效果

通过Canvas的getImageDataputImageData方法可以操作像素数据实现滤镜效果。

function applyFilter(image, filterFunction) {
    const canvas = document.createElement('canvas');
    const ctx = canvas.getContext('2d');
    canvas.width = image.width;
    canvas.height = image.height;
    ctx.drawImage(image, 0, 0);

    const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
    filterFunction(imageData.data);
    ctx.putImageData(imageData, 0, 0);

    return canvas;
}

function grayscale(pixels) {
    for (let i = 0; i < pixels.length; i += 4) {
        const avg = (pixels[i] + pixels[i+1] + pixels[i+2]) / 3;
        pixels[i] = pixels[i+1] = pixels[i+2] = avg;
    }
}

图片上传到服务器

使用FormData对象和fetch API可以将图片上传到服务器。

function uploadImage(file) {
    const formData = new FormData();
    formData.append('image', file);

    fetch('/upload', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => console.log('Upload success:', data))
    .catch(error => console.error('Upload error:', error));
}

响应式图片处理

使用window.matchMedia可以根据屏幕尺寸动态加载不同尺寸的图片。

js 实现图片功能实现

function loadResponsiveImage() {
    const smallScreen = window.matchMedia('(max-width: 600px)');
    const image = document.getElementById('responsiveImage');

    if (smallScreen.matches) {
        image.src = 'small.jpg';
    } else {
        image.src = 'large.jpg';
    }
}

window.addEventListener('resize', loadResponsiveImage);
loadResponsiveImage();

标签: 功能图片
分享给朋友:

相关文章

前端实现拖拽功能vue

前端实现拖拽功能vue

使用 HTML5 拖放 API 在 Vue 中可以通过 HTML5 的原生拖放 API 实现拖拽功能。需要监听 dragstart、dragover 和 drop 事件。 <template&…

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 在 Vue 中实现图片取色功能,可以通过 Canvas API 获取图片像素数据,并提取颜色信息。以下是具体实现方法: 使用 Canvas 获取图片颜色数据 创建 Canv…

vue实现轨道功能

vue实现轨道功能

Vue 实现轨道功能的方法 轨道功能通常指在界面中实现元素沿特定路径移动的效果,例如进度条、时间轴或动画轨迹。以下是几种常见的实现方式: 使用 CSS 动画与 Vue 结合 通过 Vue 动态绑定样…

vue实现粘贴功能

vue实现粘贴功能

实现粘贴功能的基本方法 在Vue中实现粘贴功能通常涉及监听paste事件,并处理剪贴板数据。以下是一个基础实现示例: <template> <div @paste="handl…

vue实现截图功能

vue实现截图功能

Vue实现截图功能的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将HTML元素转换为Canvas,进而生成图片。在Vue项目中安装html2can…

js实现图片加载

js实现图片加载

使用Image对象加载图片 通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。 const img = new Image(); img.src =…