我是靠谱客的博主 冷艳蜗牛,这篇文章主要介绍富文本 和 图片裁切一, 富文本编辑器的实现步骤二, 图片裁切的实现步骤三, 更换裁剪后的图片(不然的话拿到的还是裁剪前的)四, 将裁剪后的图片,输出为文件五, 实际应用六, 提交数据完成最后的添加,现在分享给大家,希望可以做个参考。

富文本编辑器和图片裁切

  • 一, 富文本编辑器的实现步骤
    • 1. 添加如下的 `layui `表单行:
    • 2. 导入富文本必须的 `script `脚本:
    • 3. 调用 `initEditor() 方法,`初始化富文本编辑器:
  • 二, 图片裁切的实现步骤
    • 1. 在` `中导入 `cropper.css `样式表:
    • 2. 在 `` 的结束标签之前,按顺序导入如下的 `js` 脚本:
    • 3. 在表单中,添加如下的表单行结构:
    • 4. 美化的样式
    • 5. 实现基本裁剪效果:
  • 三, 更换裁剪后的图片(不然的话拿到的还是裁剪前的)
    • 1. 拿到用户选择的文件
    • 2. 根据选择的文件,创建一个对应的 URL 地址:
    • 3. 先销毁旧的裁剪区域,再重新设置图片路径,之后再创建新的裁剪区域:
  • 四, 将裁剪后的图片,输出为文件
  • 五, 实际应用
  • 六, 提交数据完成最后的添加

一, 富文本编辑器的实现步骤

1. 添加如下的 layui表单行:

复制代码
1
2
3
4
5
6
7
8
9
10
<div class="layui-form-item"> <!-- 左侧的 label --> <label class="layui-form-label">文章内容</label> <!-- 为富文本编辑器外部的容器设置高度 --> <div class="layui-input-block" style="height: 400px;"> <!-- 重要:将来这个 textarea 会被初始化为富文本编辑器 --> <textarea name="content"></textarea> </div> </div>

2. 导入富文本必须的 script脚本:

复制代码
1
2
3
4
<!-- 富文本 --> <script src="/assets/lib/tinymce/tinymce.min.js"></script> <script src="/assets/lib/tinymce/tinymce_setup.js"></script>

3. 调用 initEditor() 方法,初始化富文本编辑器:

复制代码
1
2
3
4
// 初始化富文本编辑器 原版没有这是后包的函数 initEditor()

二, 图片裁切的实现步骤

1. 在<head>中导入 cropper.css样式表:

复制代码
1
2
<link rel="stylesheet" href="/assets/lib/cropper/cropper.css" />

2. 在 <body> 的结束标签之前,按顺序导入如下的 js 脚本:

复制代码
1
2
3
4
<script src="/assets/lib/jquery.js"></script> <script src="/assets/lib/cropper/Cropper.js"></script> <script src="/assets/lib/cropper/jquery-cropper.js"></script>

3. 在表单中,添加如下的表单行结构:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="layui-form-item"> <!-- 左侧的 label --> <label class="layui-form-label">文章封面</label> <!-- 选择封面区域 --> <div class="layui-input-block cover-box"> <!-- 左侧裁剪区域 --> <div class="cover-left"> <img id="image" src="/assets/images/sample2.jpg" alt="" /> </div> <!-- 右侧预览区域和选择封面区域 --> <div class="cover-right"> <!-- 预览的区域 --> <div class="img-preview"></div> <!-- 选择封面按钮 --> <button type="button" class="layui-btn layui-btn-danger">选择封面</button> </div> </div> </div>

4. 美化的样式

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/* 封面容器的样式 */ .cover-box { display: flex; } /* 左侧裁剪区域的样式 */ .cover-left { width: 400px; height: 280px; overflow: hidden; margin-right: 20px; } /* 右侧盒子的样式 */ .cover-right { display: flex; flex-direction: column; align-items: center; } /* 预览区域的样式 */ .img-preview { width: 200px; height: 140px; background-color: #ccc; margin-bottom: 20px; overflow: hidden; }

5. 实现基本裁剪效果:

复制代码
1
2
3
4
5
6
7
8
9
10
// 1. 初始化图片裁剪器 var $image = $('#image') // 2. 裁剪选项 var options = { aspectRatio: 400 / 280, preview: '.img-preview' } // 3. 初始化裁剪区域 $image.cropper(options)

三, 更换裁剪后的图片(不然的话拿到的还是裁剪前的)

1. 拿到用户选择的文件

复制代码
1
2
var file = e.target.files[0]

2. 根据选择的文件,创建一个对应的 URL 地址:

复制代码
1
2
var newImgURL = URL.createObjectURL(file)

3. 先销毁旧的裁剪区域,再重新设置图片路径,之后再创建新的裁剪区域:

复制代码
1
2
3
4
5
6
7
8
$image .cropper('destroy') // 销毁旧的裁剪区域 .attr('src', newImgURL) // 重新设置图片路径 .cropper(options) // 重新初始化裁剪区域

四, 将裁剪后的图片,输出为文件

复制代码
1
2
3
4
5
6
7
8
9
10
$image .cropper('getCroppedCanvas', { // 创建一个 Canvas 画布 width: 400, height: 280 }) .toBlob(function(blob) { // 将 Canvas 画布上的内容,转化为文件对象 // 得到文件对象后,进行后续的操作 })

五, 实际应用

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 一. 初始化 let form = layui.form; // 1. 初始化图片裁剪器 let $image = $('#image') // 2. 裁剪选项 let options = { aspectRatio: 400 / 280, preview: '.img-preview' } // 3. 初始化裁剪区域 $image.cropper(options) // 二. 为 选择封面 按钮, 添加点击事件 $('button:contains("选择封面")').on('click', function () { $('#file').trigger('click') // 调用文件域的点击事件 }) // 三. 文件域内容切换的时候, 更换裁剪区的图片 $('#file').on('change', function () { // 1 找文件对象 let fileObj = this.files[0] // 2 生成临时的 url let url = URL.createObjectURL(fileObj) // 3 替换裁剪图片 (先销毁剪切框 --> 更换图片的src --> 重新创建剪裁框) $image.cropper('destroy').attr('src', url).cropper(options) })

六, 提交数据完成最后的添加

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 为表单添加提交事件, 阻止表单的默认提交 $('form').on('submit', function (e) { e.preventDefault() // 收集数据 let fd = new FormData(this); // FormData 是根据表单各项的 name 属性收集值得 // 获取 tinymce 插件的内容,并把内容添加到 FormData 对象中 fd.set('content', tinyMCE.activeEditor.getContent()); // 剪裁图片,得到 canvas(画布格式的图片) let canvas = $image.cropper('getCroppedCanvas', { width: 400, height: 280 }) // 把canvas图片转成blob格式 canvas.toBlob(function (blob) { // 形参 blob 就是转换后的结果,需要把它也追加到FormData中 fd.append('cover_img', blob); // 验证FormData中有哪些值 fd.forEach(function (value, key) { console.log(key, value) }) // Ajax提交数据 $.ajax({ type: 'POST', url: '/my/article/add', data: fd, // 提交FormData格式的数据,必须填下面两项 processData: false, contentType: false, success: function (res) { layer.msg(res.message) if (res.status === 0) { // 添加成功,跳转到文章列表页 location.href = './list.html'; } } })

最后

以上就是冷艳蜗牛最近收集整理的关于富文本 和 图片裁切一, 富文本编辑器的实现步骤二, 图片裁切的实现步骤三, 更换裁剪后的图片(不然的话拿到的还是裁剪前的)四, 将裁剪后的图片,输出为文件五, 实际应用六, 提交数据完成最后的添加的全部内容,更多相关富文本内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部