当前位置:首页 > 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 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Intersec…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEv…

h5实现全景图片

h5实现全景图片

H5 实现全景图片的方法 使用 Three.js 库 Three.js 是一个强大的 3D 库,可以用于创建全景图片效果。以下是一个简单的实现步骤: 引入 Three.js 库 <scri…