当前位置:首页 > JavaScript

js裁剪图片js实现

2026-03-02 04:00:28JavaScript

使用Canvas API裁剪图片

Canvas API提供了一种简单的方式来裁剪和操作图片。通过创建一个canvas元素,可以将图片绘制到画布上并裁剪指定区域。

function cropImage(imageSrc, x, y, width, height) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  const img = new Image();

  img.onload = function() {
    canvas.width = width;
    canvas.height = height;
    ctx.drawImage(img, x, y, width, height, 0, 0, width, height);
    const croppedImageUrl = canvas.toDataURL('image/png');
    console.log(croppedImageUrl); // 输出裁剪后的图片URL
  };

  img.src = imageSrc;
}

使用第三方库cropper.js

cropper.js是一个功能强大的图片裁剪库,支持拖拽、缩放和旋转等功能。安装后可以通过简单配置实现复杂的裁剪功能。

import Cropper from 'cropperjs';

const image = document.getElementById('image');
const cropper = new Cropper(image, {
  aspectRatio: 16 / 9,
  crop: function(event) {
    console.log(event.detail.x);
    console.log(event.detail.y);
    console.log(event.detail.width);
    console.log(event.detail.height);
  }
});

// 获取裁剪后的图片数据
const croppedCanvas = cropper.getCroppedCanvas();
const croppedImageUrl = croppedCanvas.toDataURL('image/png');

使用HTML5的File API处理上传图片

结合File API和Canvas,可以实现上传图片后立即裁剪的功能。用户选择文件后,通过FileReader读取图片并在Canvas上处理。

document.getElementById('fileInput').addEventListener('change', function(e) {
  const file = e.target.files[0];
  const reader = new FileReader();

  reader.onload = function(event) {
    const img = new Image();
    img.onload = function() {
      const canvas = document.createElement('canvas');
      const ctx = canvas.getContext('2d');
      canvas.width = 200;
      canvas.height = 200;
      ctx.drawImage(img, 50, 50, 200, 200, 0, 0, 200, 200);
      const croppedUrl = canvas.toDataURL('image/jpeg');
      document.getElementById('preview').src = croppedUrl;
    };
    img.src = event.target.result;
  };

  reader.readAsDataURL(file);
});

响应式图片裁剪

为了实现响应式裁剪,可以根据屏幕尺寸动态调整裁剪区域。使用窗口 resize 事件监听器,在窗口大小变化时重新计算裁剪尺寸。

window.addEventListener('resize', function() {
  const screenWidth = window.innerWidth;
  const cropWidth = screenWidth > 768 ? 300 : 150;
  const cropHeight = screenWidth > 768 ? 300 : 150;

  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  canvas.width = cropWidth;
  canvas.height = cropHeight;
  ctx.drawImage(img, 0, 0, cropWidth, cropHeight);
});

保存裁剪后的图片

裁剪完成后,通常需要将图片保存或上传到服务器。可以通过将Canvas转换为Blob对象来实现。

js裁剪图片js实现

canvas.toBlob(function(blob) {
  const formData = new FormData();
  formData.append('croppedImage', blob, 'cropped-image.png');

  fetch('/upload', {
    method: 'POST',
    body: formData
  });
}, 'image/png');

标签: 图片js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template&g…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…