当前位置:首页 > 行业动态 > 正文

如何使用CropperJS实现图像的有效压缩?

cropperjs是一个基于JavaScript的图像裁剪库,用于在网页上实现图片的裁剪、缩放和旋转等功能。

Cropper.js是一个功能强大的JavaScript图像裁剪插件,它支持多种功能,如图片缩放、移动、旋转等,并且可以将裁剪后的图片以Base64格式传给后端,下面将详细介绍如何使用Cropper.js进行图片压缩,并提供相关示例和FAQs。

如何使用CropperJS实现图像的有效压缩?  第1张

Cropper.js 压缩图片步骤详解

1. 引入必要的文件

首先需要引入Cropper.js及其相关的CSS和JS文件,可以通过CDN或本地文件引入。

<link rel="stylesheet" type="text/css" href="path/to/cropper.css">
<script src="path/to/cropper.js"></script>

2. HTML容器设置

在HTML中创建一个容器用于放置上传按钮和显示图片的区域。

<div >
    <label >头像</label>
    <div >
        <input type="text" name="head" lay-verify="required" id="inputimgurl" placeholder="图片地址" >
    </div>
    <div >
        <div   id="srcimgurl"></div>
    </div>
    <div >
        <button  id="editimg">选择图片</button>
    </div>
    <div >头像的尺寸限定150x150px大小在50kb以内</div>
</div>

3. 调用Cropper.js组件

使用JavaScript初始化Cropper.js组件,并设置相关参数。

layui.use(['form', 'croppers'], function(){
    var $ = layui.jquery;
    var form = layui.form;
    var croppers = layui.croppers;
    var layer = layui.layer;
    croppers.render({
        elem: '#editimg', //触发选择文件的元素选择器
        saveW: 150, //保存宽度
        saveH: 150, //保存高度
        mark: 1 / 1, //选取比例
        area: ['90%', '80%'], //弹窗宽度
        url: 'upload.php', //上传接口地址
        done: function(res){
            console.log(res.imgUrl);
            $(":text[name=head]").val(res.imgUrl);
            $(":text[name=srcimgurl]").html('<img src="' + res.imgUrl + '" width="30" >');
        }
    });
});

4. PHP后端处理

在PHP后端接收上传的图片,并进行压缩处理。

<?php
$upload_dir = 'upload';
$newDate = date("Y-m");
$imgUrl = $upload_dir . '/' . $newDate;
if (!is_dir($upload_dir)) {
    mkdir($upload_dir);
}
if (!is_dir($imgUrl)) {
    mkdir($imgUrl);
}
$file = $_FILES['file'];
$ext = explode('.', $_FILES['file']['name']);
$ext = end($ext);
$fileName = md5(time()) . "." . $ext;
if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
    move_uploaded_file($file['tmp_name'], $imgUrl . "/" . $fileName);
    $safe_img = $imgUrl . "/" . $fileName;
    $res['code'] = "0";
    $res['imgUrl'] = $safe_img;
    $res['err'] = '上传成功!';
    die(json_encode($res));
}
?>

常见问题与解答(FAQs)

Q1: Cropper.js如何实现图片压缩?

A1: Cropper.js本身不直接提供图片压缩功能,但可以通过调整canvas的尺寸来控制输出图片的大小,从而实现压缩效果,将canvas的宽高设置为小于原始图片的尺寸,再通过toDataURL方法获取压缩后的Base64编码。

Q2: 如何处理上传后的图片压缩?

A2: 在前端使用canvas绘制裁剪后的图片时,可以设置canvas的宽高小于原始图片的尺寸,这样生成的Base64编码就会变小,从而达到压缩的效果,然后在后端接收到Base64编码后,可以进一步处理或存储。

小编有话说

Cropper.js是一个非常实用的图片裁剪工具,通过简单的配置就可以实现丰富的功能,在实际开发中,可以根据具体需求调整参数,以达到最佳的效果,希望本文能够帮助大家更好地理解和使用Cropper.js进行图片裁剪和压缩,如果有任何疑问或建议,欢迎留言讨论!

0