当前位置:首页 > JavaScript

js裁剪图片js实现

2026-01-31 12:44:47JavaScript

使用Canvas实现图片裁剪

在JavaScript中,Canvas API提供了一种简单而强大的方式来裁剪图片。以下是一个基本的实现方法:

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');

function cropImage(image, x, y, width, height) {
  canvas.width = width;
  canvas.height = height;
  ctx.drawImage(image, x, y, width, height, 0, 0, width, height);
  return canvas.toDataURL('image/png');
}

使用第三方库实现更复杂的裁剪

对于更高级的裁剪需求,可以使用专门的库如cropper.js:

js裁剪图片js实现

// 引入cropper.js后
const image = document.getElementById('image');
const cropper = new Cropper(image, {
  aspectRatio: 16 / 9,
  crop(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/jpeg');

实现圆形头像裁剪

对于圆形头像裁剪,可以使用Canvas的clip方法:

js裁剪图片js实现

function cropCircle(image, size) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  canvas.width = size;
  canvas.height = size;

  ctx.beginPath();
  ctx.arc(size/2, size/2, size/2, 0, Math.PI*2);
  ctx.closePath();
  ctx.clip();

  ctx.drawImage(image, 0, 0, size, size);
  return canvas.toDataURL('image/png');
}

响应式图片裁剪

在响应式设计中,需要考虑图片的缩放比例:

function responsiveCrop(image, cropArea, displaySize) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');

  // 计算实际裁剪比例
  const scaleX = image.naturalWidth / image.width;
  const scaleY = image.naturalHeight / image.height;

  canvas.width = displaySize.width;
  canvas.height = displaySize.height;

  ctx.drawImage(
    image,
    cropArea.x * scaleX,
    cropArea.y * scaleY,
    cropArea.width * scaleX,
    cropArea.height * scaleY,
    0,
    0,
    displaySize.width,
    displaySize.height
  );

  return canvas.toDataURL('image/jpeg');
}

保存裁剪后的图片

将裁剪后的图片保存为文件:

function saveCroppedImage(dataUrl, fileName) {
  const link = document.createElement('a');
  link.download = fileName;
  link.href = dataUrl;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

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

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js验证码的实现

js验证码的实现

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

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…