You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Cropper.js代码实现指定图片的预加载裁剪

修改Cropper.js脚本实现加载指定图片裁剪

1. 调整模态框触发逻辑

替换原上传触发的逻辑,改成点击链接或页面加载时直接打开模态框并加载指定图片:

<!-- 添加触发链接 -->
<a href="#" id="open-cropper">打开裁剪工具</a>

<!-- 原模态框保留(假设ID为cropModal) -->
<div class="modal fade" id="cropModal" tabindex="-1" role="dialog">
  <!-- 模态框内容(原脚本结构保留) -->
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-body">
        <img id="preview_image" src="" alt="待裁剪图片">
        <div class="preview"></div>
      </div>
      <div class="modal-footer">
        <button type="button" id="crop_button" class="btn btn-primary">完成裁剪</button>
      </div>
    </div>
  </div>
</div>
// 点击链接触发
$('#open-cropper').click(function(e){
    e.preventDefault();
    loadSpecifiedImage('abc.jpg'); // 传入指定图片路径
    $('#cropModal').modal('show');
});

// 页面加载自动触发(可选)
$(document).ready(function(){
    loadSpecifiedImage('abc.jpg');
    $('#cropModal').modal('show');
});

2. 新增指定图片加载与Cropper初始化函数

替换原FileReader处理上传文件的逻辑,直接加载指定图片并初始化裁剪:

function loadSpecifiedImage(imagePath) {
    const $image = $('#preview_image');
    
    // 销毁已有Cropper实例,避免重复初始化
    if ($image.data('cropper')) {
        $image.cropper('destroy');
    }
    
    // 设置图片路径并初始化Cropper(参数可按原脚本需求调整)
    $image.attr('src', imagePath).cropper({
        aspectRatio: 1, // 裁剪比例,按需修改
        viewMode: 2,
        preview: '.preview', // 预览区域选择器,原脚本保留则沿用
        autoCropArea: 0.8 // 默认裁剪区域占比
    });
}

3. 修改裁剪提交逻辑

原脚本是提交上传文件,现在改为提交裁剪后的图片数据:

$('#crop_button').click(function(){
    const $image = $('#preview_image');
    
    // 获取裁剪后的Canvas对象
    $image.cropper('getCroppedCanvas', {
        width: 400, // 裁剪后图片宽度
        height: 400 // 裁剪后图片高度
    }).toBlob(function(blob) {
        // 构造FormData提交到后端
        const formData = new FormData();
        formData.append('cropped_image', blob, 'cropped_abc.jpg');
        
        // AJAX提交(后端路径沿用原脚本的处理文件)
        $.ajax({
            url: 'crop_process.php',
            method: 'POST',
            data: formData,
            processData: false,
            contentType: false,
            success: function(res) {
                $('#cropModal').modal('hide');
                // 这里可添加裁剪成功后的逻辑,比如显示结果图片
            }
        });
    });
});

4. 后端PHP适配(可选)

如果原后端是处理上传文件,调整为接收裁剪后的图片:

<?php
if(isset($_FILES['cropped_image'])){
    $uploadDir = 'uploads/';
    $targetFile = $uploadDir . basename($_FILES['cropped_image']['name']);
    
    if(move_uploaded_file($_FILES['cropped_image']['tmp_name'], $targetFile)){
        echo json_encode(['status' => 'success', 'path' => $targetFile]);
    } else {
        echo json_encode(['status' => 'error']);
    }
}
?>

内容的提问来源于stack exchange,提问作者Serhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:02:15