广告
返回顶部
首页 > 资讯 > 精选 >Vue图片编辑插件tui.image-editor怎么用
  • 427
分享到

Vue图片编辑插件tui.image-editor怎么用

2023-06-21 21:06:48 427人浏览 泡泡鱼
摘要

Vue图片编辑插件tui.image-editor怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近用户提出了一个新的需求,老师可以批改学生的图片作业,需要对图片进行

Vue图片编辑插件tui.image-editor怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

最近用户提出了一个新的需求,老师可以批改学生的图片作业,需要对图片进行旋转、缩放、裁剪、涂鸦、标注、添加文本等。乍一听,又要掉不少头发。有没有功能强大的插件实现以上功能,让我有更多的时间去阻止女票双十一剁手呢?答案当然是有的。

效果展示

涂鸦

Vue图片编辑插件tui.image-editor怎么用

裁剪

Vue图片编辑插件tui.image-editor怎么用

标注

Vue图片编辑插件tui.image-editor怎么用

旋转

Vue图片编辑插件tui.image-editor怎么用

滤镜

Vue图片编辑插件tui.image-editor怎么用

是不是很强大!还有众多功能我就不一一展示了。那么还等什么,跟我一起用起来吧~

安装

npm i tui-image-editor// oryarn add tui-image-editor

使用

快速体验

复制以下代码,将插件引入到自己的项目中。

<template>  <div>    <div id="tui-image-editor"></div>  </div></template><script>import "tui-image-editor/dist/tui-image-editor.CSS";import "tui-color-picker/dist/tui-color-picker.css";import ImageEditor from "tui-image-editor";export default {  data() {    return {      instance: null,    };  },  mounted() {    this.init();  },  methods: {    init() {      this.instance = new ImageEditor(        document.querySelector("#tui-image-editor"),        {          includeUI: {            loadImage: {              path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",              name: "image",            },            initMenu: "draw", // 默认打开的菜单项            menuBarPosition: "bottom", // 菜单所在的位置          },          cSSMaxWidth: 1000, // canvas 最大宽度          cssMaxHeight: 600, // canvas 最大高度        }      );      document.getElementsByClassName("tui-image-editor-main")[0].style.top = "45px"; // 图片距顶部工具栏的距离    },  },};</script><style scoped>.drawing-container {  height: 900px;}</style>

可以看到活生生的图片编辑工具就出现了,是不是很简单:

Vue图片编辑插件tui.image-editor怎么用

国际化

由于是老外开发的,默认的文字描述都是英文,这里我们先汉化一下:

const locale_zh = {  ZoomIn: "放大",  ZoomOut: "缩小",  Hand: "手掌",  History: '历史',  Resize: '调整宽高',  Crop: "裁剪",  DeleteAll: "全部删除",  Delete: "删除",  Undo: "撤销",  Redo: "反撤销",  Reset: "重置",  Flip: "镜像",  Rotate: "旋转",  Draw: "画",  Shape: "形状标注",  Icon: "图标标注",  Text: "文字标注",  Mask: "遮罩",  Filter: "滤镜",  Bold: "加粗",  Italic: "斜体",  Underline: "下划线",  Left: "左对齐",  Center: "居中",  Right: "右对齐",  Color: "颜色",  "Text size": "字体大小",  Custom: "自定义",  Square: "正方形",  Apply: "应用",  Cancel: "取消",  "Flip X": "X 轴",  "Flip Y": "Y 轴",  Range: "区间",  Stroke: "描边",  Fill: "填充",  Circle: "圆",  Triangle: "三角",  Rectangle: "矩形",  Free: "曲线",  Straight: "直线",  Arrow: "箭头",  "Arrow-2": "箭头2",  "Arrow-3": "箭头3",  "Star-1": "星星1",  "Star-2": "星星2",  PolyGon: "多边形",  Location: "定位",  Heart: "心形",  Bubble: "气泡",  "Custom icon": "自定义图标",  "Load Mask Image": "加载蒙层图片",  Grayscale: "灰度",  Blur: "模糊",  Sharpen: "锐化",  Emboss: "浮雕",  "Remove White": "除去白色",  Distance: "距离",  Brightness: "亮度",  Noise: "噪音",  "Color Filter": "彩色滤镜",  Sepia: "棕色",  Sepia2: "棕色2",  Invert: "负片",  Pixelate: "像素化",  Threshold: "阈值",  Tint: "色调",  Multiply: "正片叠底",  Blend: "混合色",  Width: "宽度",  Height: "高度",  "Lock Aspect Ratio": "定宽高比例",};this.instance = new ImageEditor(  document.querySelector("#tui-image-editor"),  {    includeUI: {      loadImage: {        path: "Https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",        name: "image",      },      initMenu: "draw", // 默认打开的菜单项      menuBarPosition: "bottom", // 菜单所在的位置      locale: locale_zh, // 本地化语言为中文    },    cssMaxWidth: 1000, // canvas 最大宽度    cssMaxHeight: 600, // canvas 最大高度  });

效果如下:

Vue图片编辑插件tui.image-editor怎么用

自定义样式

默认风格为暗黑系,如果想改成白底,或者想改变按钮的大小、颜色等样式,可以使用自定义样式。

const customTheme = {  "common.bi.image": "", // 左上角logo图片  "common.bisize.width": "0px",  "common.bisize.height": "0px",  "common.backgroundImage": "none",  "common.backgroundColor": "#f3f4f6",  "common.border": "1px solid #333",  // header  "header.backgroundImage": "none",  "header.backgroundColor": "#f3f4f6",  "header.border": "0px",    // load button  "loadButton.backgroundColor": "#fff",  "loadButton.border": "1px solid #DDD",  "loadButton.color": "#222",  "loadButton.fontFamily": "NotoSans, sans-serif",  "loadButton.fontSize": "12px",  "loadButton.display": "none", // 隐藏  // download button  "downloadButton.backgroundColor": "#fdba3b",  "downloadButton.border": "1px solid #fdba3b",  "downloadButton.color": "#fff",  "downloadButton.fontFamily": "NotoSans, sans-serif",  "downloadButton.fontSize": "12px",  "downloadButton.display": "none", // 隐藏  // icons default  "menu.nORMalIcon.color": "#8a8a8a",  "menu.activeIcon.color": "#555555",  "menu.disabledIcon.color": "#ccc",  "menu.hoverIcon.color": "#e9e9e9",  "submenu.normalIcon.color": "#8a8a8a",  "submenu.activeIcon.color": "#e9e9e9",  "menu.iconSize.width": "24px",  "menu.iconSize.height": "24px",  "submenu.iconSize.width": "32px",  "submenu.iconSize.height": "32px",  // submenu primary color  "submenu.backgroundColor": "#1e1e1e",  "submenu.partition.color": "#858585",  // submenu labels  "submenu.normalLabel.color": "#858585",  "submenu.normalLabel.fontWeight": "lighter",  "submenu.activeLabel.color": "#fff",  "submenu.activeLabel.fontWeight": "lighter",  // checkbox style  "checkbox.border": "1px solid #ccc",  "checkbox.backgroundColor": "#fff",  // rango style  "range.pointer.color": "#fff",  "range.bar.color": "#666",  "range.subbar.color": "#d1d1d1",  "range.disabledPointer.color": "#414141",  "range.disabledBar.color": "#282828",  "range.disabledSubbar.color": "#414141",  "range.value.color": "#fff",  "range.value.fontWeight": "lighter",  "range.value.fontSize": "11px",  "range.value.border": "1px solid #353535",  "range.value.backgroundColor": "#151515",  "range.title.color": "#fff",  "range.title.fontWeight": "lighter",  // colorpicker style  "colorpicker.button.border": "1px solid #1e1e1e",  "colorpicker.title.color": "#fff",};this.instance = new ImageEditor(  document.querySelector("#tui-image-editor"),  {    includeUI: {      loadImage: {        path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",        name: "image",      },      initMenu: "draw", // 默认打开的菜单项      menuBarPosition: "bottom", // 菜单所在的位置      locale: locale_zh, // 本地化语言为中文      theme: customTheme, // 自定义样式    },    cssMaxWidth: 1000, // canvas 最大宽度    cssMaxHeight: 600, // canvas 最大高度  });

效果如下:

Vue图片编辑插件tui.image-editor怎么用

按钮优化

通过自定义样式,我们看到右上角的 Load 和 Download 按钮已经被隐藏了,接下来我们再隐藏掉其他用不上的按钮(根据业务需要),并添加一个保存图片的按钮。

<template>  <div>    <div id="tui-image-editor"></div>    <el-button type="primary" size="small" @click="save">保存</el-button>  </div></template>// ...methods: {  init() {    this.instance = new ImageEditor(      document.querySelector("#tui-image-editor"),      {        includeUI: {          loadImage: {            path: "https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image",            name: "image",          },          menu: ["resize", "crop", "rotate", "draw", "shape", "icon", "text", "filter"], // 底部菜单按钮列表 隐藏镜像flip和遮罩mask          initMenu: "draw", // 默认打开的菜单项          menuBarPosition: "bottom", // 菜单所在的位置          locale: locale_zh, // 本地化语言为中文          theme: customTheme, // 自定义样式        },        cssMaxWidth: 1000, // canvas 最大宽度        cssMaxHeight: 600, // canvas 最大高度      }    );    document.getElementsByClassName("tui-image-editor-main")[0].style.top ="45px"; // 调整图片显示位置    document.getElementsByClassName("tie-btn-reset tui-image-editor-item help") [0].style.display = "none";  // 隐藏顶部重置按钮  },  // 保存图片,并上传  save() {    const base64String = this.instance.toDataURL(); // base64 文件    const data = window.atob(base64String.split(",")[1]);    const ia = new Uint8Array(data.length);    for (let i = 0; i < data.length; i++) {      ia[i] = data.charCodeAt(i);    }    const blob = new Blob([ia], { type: "image/png" }); // blob 文件    const form = new FormData();    form.append("image", blob);    // upload file  },}<style scoped>.drawing-container {  height: 900px;  position: relative;  .save {    position: absolute;    right: 50px;    top: 15px;  }}</style>

效果如下:

Vue图片编辑插件tui.image-editor怎么用

可以看到顶部的重置按钮,以及底部的镜像和遮罩按钮都已经不见了。右上角多了一个我们自己的保存按钮,点击按钮,可以获取到 base64 文件和 blob 文件。

完整代码

<template>  <div>    <div id="tui-image-editor"></div>    <el-button type="primary" size="small" @click="save">保存</el-button>  </div></template><script>import 'tui-image-editor/dist/tui-image-editor.css'import 'tui-color-picker/dist/tui-color-picker.css'import ImageEditor from 'tui-image-editor'const locale_zh = {  ZoomIn: '放大',  ZoomOut: '缩小',  Hand: '手掌',  History: '历史',  Resize: '调整宽高',  Crop: '裁剪',  DeleteAll: '全部删除',  Delete: '删除',  Undo: '撤销',  Redo: '反撤销',  Reset: '重置',  Flip: '镜像',  Rotate: '旋转',  Draw: '画',  Shape: '形状标注',  Icon: '图标标注',  Text: '文字标注',  Mask: '遮罩',  Filter: '滤镜',  Bold: '加粗',  Italic: '斜体',  Underline: '下划线',  Left: '左对齐',  Center: '居中',  Right: '右对齐',  Color: '颜色',  'Text size': '字体大小',  Custom: '自定义',  Square: '正方形',  Apply: '应用',  Cancel: '取消',  'Flip X': 'X 轴',  'Flip Y': 'Y 轴',  Range: '区间',  Stroke: '描边',  Fill: '填充',  Circle: '圆',  Triangle: '三角',  Rectangle: '矩形',  Free: '曲线',  Straight: '直线',  Arrow: '箭头',  'Arrow-2': '箭头2',  'Arrow-3': '箭头3',  'Star-1': '星星1',  'Star-2': '星星2',  Polygon: '多边形',  Location: '定位',  Heart: '心形',  Bubble: '气泡',  'Custom icon': '自定义图标',  'Load Mask Image': '加载蒙层图片',  Grayscale: '灰度',  Blur: '模糊',  Sharpen: '锐化',  Emboss: '浮雕',  'Remove White': '除去白色',  Distance: '距离',  Brightness: '亮度',  Noise: '噪音',  'Color Filter': '彩色滤镜',  Sepia: '棕色',  Sepia2: '棕色2',  Invert: '负片',  Pixelate: '像素化',  Threshold: '阈值',  Tint: '色调',  Multiply: '正片叠底',  Blend: '混合色',  Width: '宽度',  Height: '高度',  'Lock Aspect Ratio': '锁定宽高比例'}const customTheme = {  "common.bi.image": "", // 左上角logo图片  "common.bisize.width": "0px",  "common.bisize.height": "0px",  "common.backgroundImage": "none",  "common.backgroundColor": "#f3f4f6",  "common.border": "1px solid #333",  // header  "header.backgroundImage": "none",  "header.backgroundColor": "#f3f4f6",  "header.border": "0px",    // load button  "loadButton.backgroundColor": "#fff",  "loadButton.border": "1px solid #ddd",  "loadButton.color": "#222",  "loadButton.fontFamily": "NotoSans, sans-serif",  "loadButton.fontSize": "12px",  "loadButton.display": "none", // 隐藏  // download button  "downloadButton.backgroundColor": "#fdba3b",  "downloadButton.border": "1px solid #fdba3b",  "downloadButton.color": "#fff",  "downloadButton.fontFamily": "NotoSans, sans-serif",  "downloadButton.fontSize": "12px",  "downloadButton.display": "none", // 隐藏  // icons default  "menu.normalIcon.color": "#8a8a8a",  "menu.activeIcon.color": "#555555",  "menu.disabledIcon.color": "#ccc",  "menu.hoverIcon.color": "#e9e9e9",  "submenu.normalIcon.color": "#8a8a8a",  "submenu.activeIcon.color": "#e9e9e9",  "menu.iconSize.width": "24px",  "menu.iconSize.height": "24px",  "submenu.iconSize.width": "32px",  "submenu.iconSize.height": "32px",  // submenu primary color  "submenu.backgroundColor": "#1e1e1e",  "submenu.partition.color": "#858585",  // submenu labels  "submenu.normalLabel.color": "#858585",  "submenu.normalLabel.fontWeight": "lighter",  "submenu.activeLabel.color": "#fff",  "submenu.activeLabel.fontWeight": "lighter",  // checkbox style  "checkbox.border": "1px solid #ccc",  "checkbox.backgroundColor": "#fff",  // rango style  "range.pointer.color": "#fff",  "range.bar.color": "#666",  "range.subbar.color": "#d1d1d1",  "range.disabledPointer.color": "#414141",  "range.disabledBar.color": "#282828",  "range.disabledSubbar.color": "#414141",  "range.value.color": "#fff",  "range.value.fontWeight": "lighter",  "range.value.fontSize": "11px",  "range.value.border": "1px solid #353535",  "range.value.backgroundColor": "#151515",  "range.title.color": "#fff",  "range.title.fontWeight": "lighter",  // colorpicker style  "colorpicker.button.border": "1px solid #1e1e1e",  "colorpicker.title.color": "#fff",};export default {  data() {    return {      instance: null    }  },  mounted() {    this.init()  },  methods: {    init() {      this.instance = new ImageEditor(document.querySelector('#tui-image-editor'), {        includeUI: {          loadImage: {            path: 'https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c1d7a1feb60346449c1a64893888989a~tplv-k3u1fbpfcp-watermark.image',            name: 'image'          },          menu: ['resize', 'crop', 'rotate', 'draw', 'shape', 'icon', 'text', 'filter'], // 底部菜单按钮列表 隐藏镜像flip和遮罩mask          initMenu: 'draw', // 默认打开的菜单项          menuBarPosition: 'bottom', // 菜单所在的位置          locale: locale_zh, // 本地化语言为中文          theme: customTheme // 自定义样式        },        cssMaxWidth: 1000, // canvas 最大宽度        cssMaxHeight: 600 // canvas 最大高度      })      document.getElementsByClassName('tui-image-editor-main')[0].style.top = '45px' // 调整图片显示位置      document.getElementsByClassName(        'tie-btn-reset tui-image-editor-item help'      )[0].style.display = 'none' // 隐藏顶部重置按钮    },    // 保存图片,并上传    save() {      const base64String = this.instance.toDataURL() // base64 文件      const data = window.atob(base64String.split(',')[1])      const ia = new Uint8Array(data.length)      for (let i = 0; i < data.length; i++) {        ia[i] = data.charCodeAt(i)      }      const blob = new Blob([ia], { type: 'image/png' }) // blob 文件      const form = new FormData()      form.append('image', blob)      // upload file    }  }}</script><style scoped>.drawing-container {  height: 900px;  position: relative;  .save {    position: absolute;    right: 50px;    top: 15px;  }}</style>

以上就是 tui.image-editor 的基本使用方法,相比其他插件,tui.image-editor 的优势是功能强大,简单易上手。

关于Vue图片编辑插件tui.image-editor怎么用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: Vue图片编辑插件tui.image-editor怎么用

本文链接: https://www.lsjlt.com/news/300682.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue图片编辑插件tui.image-editor怎么用
    Vue图片编辑插件tui.image-editor怎么用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近用户提出了一个新的需求,老师可以批改学生的图片作业,需要对图片进行...
    99+
    2023-06-21
  • HTML中如何使用上传图片插件、图文编辑、时间插件
    这篇文章将为大家详细讲解有关HTML中如何使用上传图片插件、图文编辑、时间插件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。<!DOCTYPE html>&l...
    99+
    2022-10-19
  • JS图片预加载插件怎么用
    这篇文章主要介绍了JS图片预加载插件怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在开发H5项目中有时候会遇到要加载大量图片的情况,利...
    99+
    2022-10-19
  • JS图片延迟加载插件LazyImgv1.0怎么用
    这篇文章给大家分享的是有关JS图片延迟加载插件LazyImgv1.0怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:注:LazyImg 必须定义lazy-data属...
    99+
    2022-10-19
  • 在vue项目中怎么使用codemirror插件实现代码编辑器功能
    这篇文章主要为大家展示了“在vue项目中怎么使用codemirror插件实现代码编辑器功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在vue项目中怎么使用c...
    99+
    2022-10-19
  • vue中怎么使用vue-awesome-swiper轮播图插件
    vue中怎么使用vue-awesome-swiper轮播图插件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一步安装npm ins...
    99+
    2022-10-19
  • vue的vue-awesome-swiper轮播图插件怎么使用
    这篇文章主要讲解了“vue的vue-awesome-swiper轮播图插件怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue的vue-awesome-swiper轮播图插件怎么使用...
    99+
    2023-07-04
  • 怎么在c#中使用WinForm制作一个图片编辑工具
    今天就跟大家聊聊有关怎么在c#中使用WinForm制作一个图片编辑工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 功能介绍程序主界面点击打开图片,可选择多个图片文件。图片缩略图...
    99+
    2023-06-07
  • 怎么用CSS和JS打造一个简单的图片编辑器
    本篇内容介绍了“怎么用CSS和JS打造一个简单的图片编辑器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • 在Linux系统下怎么用Krita软件对照片进行编辑
    本篇内容介绍了“在Linux系统下怎么用Krita软件对照片进行编辑”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 图 1:侏儒山...
    99+
    2023-06-13
  • 怎么用Vue组件封装上传图片和视频
    这篇文章主要介绍“怎么用Vue组件封装上传图片和视频”,在日常操作中,相信很多人在怎么用Vue组件封装上传图片和视频问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Vue组件封装上传图片和视频”的疑惑有所...
    99+
    2023-06-20
  • 微信小程序 怎么插入图片?image组件的使用教程。
    这期我们来学学怎么在小程序中插入图片 1.image组件的简介         是小程序中一个图片的组件         image组件有一个默认宽度和高度(宽300px,高240px)         支持 JPG、PNG、SVG、WE...
    99+
    2023-09-05
    微信小程序 小程序
  • 怎么使用HTML5与CSS3实现无插件拖拽上传图片功能
    这篇文章主要介绍“怎么使用HTML5与CSS3实现无插件拖拽上传图片功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用HTML5与CSS3实现无插件拖拽上传图片功能”文章能帮助大家解决问题。...
    99+
    2023-07-04
  • 怎么使用Vue实现移动端图片裁剪组件功能
    本篇内容主要讲解“怎么使用Vue实现移动端图片裁剪组件功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Vue实现移动端图片裁剪组件功能”吧!  一、组件的初始化参数  1、图片img(...
    99+
    2023-07-04
  • 怎么利用vue组件实现图片的拖拽和缩放功能
    这篇文章将为大家详细讲解有关怎么利用vue组件实现图片的拖拽和缩放功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言vue实现一个组件其实很简单但是要写出一个好的可复用的组件那就需要多学...
    99+
    2023-06-26
  • vue+webpack解决css引用图片打包后找不到资源文件怎么办
    这篇文章将为大家详细讲解有关vue+webpack解决css引用图片打包后找不到资源文件怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用vue打包,通过css引用...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作