当前位置:首页 > 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是一个功能强大的图片裁剪库,支持拖拽、缩放和旋转等功能。安装后可以通过简单配置实现复杂的裁剪功能。

js裁剪图片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上处理。

js裁剪图片js实现

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对象来实现。

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

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

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

相关文章

css3怎么制作图片

css3怎么制作图片

使用 CSS3 制作图片效果 CSS3 提供了多种方法来处理和美化图片,以下是几种常见的实现方式: 圆角效果 通过 border-radius 属性可以轻松为图片添加圆角: img { bor…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="sli…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

vue实现图片查看

vue实现图片查看

实现图片查看功能 在Vue中实现图片查看功能可以通过多种方式完成,常见的有使用原生HTML5的<dialog>元素、第三方组件库(如Element UI、Vant等)或专用插件(如view…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…