tui-image-editor编辑图片的使用

1.安装tui-image-editor

命令:npm i tui-image-editor

如果此步命令执行安装成功后启动还是报错找不到文件的话请检查以下文件

可手动添加到package.json后重新执行npm install 再次启动后便成功

或者单独安装此代码依赖块

npm install --save @toast-ui/vue-image-editor  npm install tui-code-snippet

这里放一下官方文档可进行参考http://nhn.github.io/tui.image-editor/latest/ImageEditor#getImageNameicon-default.png?t=M3K6http://nhn.github.io/tui.image-editor/latest/ImageEditor#getImageName

 2.使用tui-image-editor

       

 此处我将图片默认设置为空了,可根据path来设置自己的图片路径下面话不多说直接上代码 注释已经写清楚了

<template>//编辑图片的dom容器<div id="tui-image-editor"></div>//获取编辑后图片的按钮<div class="saveButton"><el-button v-show="showBtn" class="btns" type="primary" @click="uploadImg">完成并上传</el-button><el-progress class="progress"v-show="showProgress"type="line":percentage="99":width="178":status="percentage === 100 ? 'success' : undefined"></el-progress></div></div>
</template>
<script>
//在此处引入依赖块
import "tui-image-editor/dist/tui-image-editor.css";
import "tui-color-picker/dist/tui-color-picker.css";
import imgTypeChange from "@/components/edit_image/imgTypeChange";
//可以先行获取到dom块方便操作
const ImageEditor = require("tui-image-editor");export default {data() {return {instance: null,};},mounted() {this.instance = new ImageEditor(document.querySelector("#tui-image-editor"),{includeUI: {loadImage: {path: ,//图片路径name: "",//如果是根据传值过来的话传值图片的名称},initMenu: "draw",menuBarPosition: "button",},});},methods: {async uploadImg() {//获取编辑后图片的功能let fileName = this.instance.getImageName();var arr = this.instance.toDataURL().split(','),mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n)while (n--) {u8arr[n] = bstr.charCodeAt(n)}let file = new File([u8arr], fileName, {type: mime})if (!file.type.includes('image/jpeg')) {let myFile = await imgTypeChange(file)console.log(myFile);const formData = new FormData()formData.append('file', myFile)let data = formData.get('file')const reader = new FileReader()reader.readAsDataURL(data)reader.onload = () => {this.showBtn = falsethis.showProgress = truethis.$axios.post('/v1/ocr', {"file": reader.result}).then(res => {console.log(res.data)if (res.data.status_code == '200') {this.percentage = 100}}).catch(err => {console.log(err)})}}},},
};
</script><style lang="scss" scoped>
</style>

大功告成后的效果就是这样子的

3.个性化编辑tui-image-editor

tui-image-editor是支持个性化编辑的{汉化,样式,显示什么都可以调的}

<template><div class="container"><div class="PictureDisplay"><div class="pictureLeft"><img :src='imgUrl' style="width: auto;height: auto;max-width: 100%;max-height: 850px;" alt=""></div><div id="tui-image-editor"></div></div><div class="saveButton"><el-button v-show="showBtn" class="btns" type="primary" @click="uploadImg">完成并上传</el-button><el-progress class="progress"v-show="showProgress"type="line":percentage="99":width="178":status="percentage === 100 ? 'success' : undefined"></el-progress></div></div>
</template>
<script>
import "tui-image-editor/dist/tui-image-editor.css";
import "tui-color-picker/dist/tui-color-picker.css";
import imgTypeChange from "@/components/edit_image/imgTypeChange";
// import qs from 'qs'
const ImageEditor = require("tui-image-editor");
const locale_zh = {// override default English locale to your customZoomIn: '放大',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: "混合色",
};// 画布组件自定义样式
const customTheme = {// image 坐上角度图片'common.bi.image': '', // 在这里换上你喜欢的logo图片'common.bisize.width': '','common.bisize.height': '0px','common.backgroundImage': 'none','common.border': '1px solid #444',// header'header.backgroundImage': 'none','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', // 可以直接隐藏掉// 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,imgUrl: '',showBtn: true,showProgress: false,percentage: 0,};},mounted() {this.imgUrl = this.$route.params.resultthis.instance = new ImageEditor(document.querySelector("#tui-image-editor"),{includeUI: {loadImage: {path: this.$route.params.result,name: "1",},initMenu: "draw",menuBarPosition: "right",locale: locale_zh,//文字汉化theme: customTheme,//样式修改},});},methods: {async uploadImg() {let fileName = this.instance.getImageName();var arr = this.instance.toDataURL().split(','),mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n)while (n--) {u8arr[n] = bstr.charCodeAt(n)}let file = new File([u8arr], fileName, {type: mime})if (!file.type.includes('image/jpeg')) {let myFile = await imgTypeChange(file)console.log(myFile);const formData = new FormData()formData.append('file', myFile)let data = formData.get('file')const reader = new FileReader()reader.readAsDataURL(data)reader.onload = () => {this.showBtn = falsethis.showProgress = truethis.$axios.post('/v1/ocr', {"file": reader.result}).then(res => {console.log(res.data)if (res.data.status_code == '200') {this.percentage = 100}}).catch(err => {console.log(err)})}}},},
};
</script><style lang="scss" scoped>
.container {display: flex;flex-direction: column;width: 100%;height: 850px;.PictureDisplay {flex: 1;display: flex;height: 850px;.pictureLeft {flex: 1;}#tui-image-editor {width: 50% !important;}}.saveButton {width: 100%;height: 120px;.btns {position: relative;left: 45%;top: 30%;}.progress {position: relative;left: 45%;top: 20px;width: 200px;}}}
</style>

样式大概就是这样子啦我此处留白是放置了原图进行做对比,你们可以直接铺满全屏哦,完成并上传的话我取到的是base64的文件,所以我将其转为了file传给后台。具体的转换方法我会写在另一篇文章有需要的可自取哦!!

 

这就是以上全部内容了,掌声在哪里!!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51869.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学好=编程能力强?答案或许跟你想的不一样

学好数理化&#xff0c;走遍全天下&#xff01;小时候&#xff0c;这句顺口溜时常在耳边响起&#xff0c;而迈入编程行业以后&#xff0c;又被不小人咨询&#xff0c;我数学不好&#xff0c;能写好代码吗&#xff1f; 不过最近的 MIT 神经科学家在 eLife 期刊发表了一项新研究…

为什么美国学生学的数学比我们简单,却能做出很牛逼的东西?

来源&#xff1a;IT有个 圈儿 &#xff02;美国给予不热爱数学的学生最基础的数学教育&#xff0c;而给予热爱数学的学生最高水平的数学教育。&#xff02; 长久以来&#xff0c;中国人的迷思就是&#xff0c;为何「美国人数学这么差&#xff0c;还能出这么多牛逼科学家&#x…

学计算机语言需要英语基础吗,数学和英语不好的人能学编程吗?

数学和英语不好的人能学编程吗&#xff1f; 有许多小伙伴问&#xff1a;学编程需要什么基础&#xff1f;很多人都会有一个下意识的想法就是英语数学不好就不能学编程&#xff0c;其实这是一个误区。从根本上来说学编程确实需要数学和英语。因为代码是用英文写的&#xff0c;数学…

“编程能力差,90%输在了数学上!”丨多数程序员都是瞎努力!

一流程序员学数学&#xff0c;二流程序员学算法&#xff0c;低端看高端就是黑魔法。 可能有人以为这就是个段子&#xff0c;但有过工作经验的都知道&#xff0c;这其实就是程序员的真实写照&#xff01; 想一想&#xff0c;我们学习、求职、工作的场景中&#xff0c;你一定因…

英语和数学不好是不是学不好编程?

做IT行业观察这个公众号已经三个多月~期间遇到很多想学编程&#xff0c;但又害怕学习编程的人&#xff0c;他们都有同样的问题&#xff1a; 学习编程&#xff0c;是否需要英语&#xff1f; 我数学不好&#xff0c;能学好编程吗&#xff1f; 学习编程&#xff0c;英文和数学肯定…

程序员不需要知道太多数学,你认同吗

之前在知乎看到一个问题&#xff1a; https://www.zhihu.com/question/48617074/answer/111889884 程序员不需要知道太多数学&#xff0c;你认同吗&#xff1f; 我听到的关于学习编程的最常见的顾虑&#xff0c;就是人们认为这需要很多数学知识。其实&#xff0c;大多数编程需…

为何敲代码,学好数学很重要?

数学是编程的灵魂所在。 作者 | Justin Meiners 译者 | 王艳妮&#xff0c;责编 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 以下为译文&#xff1a; 程序员喜欢讨论编程语言。除了辩论它们各自的优点外&#xff0c;我们还喜欢将它们整合到我们的身份认…

【学术相关】为什么美国学生学的数学比我们简单,却能做出很牛逼的东西?...

本文转自|视觉算法 &#xff02;美国给予不热爱数学的学生最基础的数学教育&#xff0c;而给予热爱数学的学生最高水平的数学教育。&#xff02; 长久以来&#xff0c;中国人的迷思就是&#xff0c;为何「美国人数学这么差&#xff0c;还能出这么多牛逼科学家&#xff1f;」这个…

程序员的数学好难学?一切从基础开始!

数学知识对编程很有用&#xff0c;但是很多写给程序员的数学书都比较难。我们为什么不从基础的数学知识开始学习呢&#xff1f; 程序员的数学基础 Python实战 1.本书的重点不在于如何解题&#xff0c;而在于帮助读者在计算机世界里如何利用数学解决算法问题&#xff0c;让程序…

北大GPT解题有数学老师内味了,用人话讲难题,从高中数学到高数都能搞定

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 克雷西 发自 凹非寺量子位 | 公众号 QbitAI 北大团队教会AI把人话当编程语言用。 这下大语言模型&#xff08;LLM&#xff09;不光能做对数学题&#xff0c;而且解题过程你…

谁说数学好编程就好了?MIT告诉你:不对!

【编者按】不夸张地说&#xff0c;在这个时代&#xff0c;编程时时刻刻都在影响着整个世界的运转&#xff0c;它让我们的生活变得更加惬意悠闲。那编程到底是什么&#xff1f;应该算一门语言&#xff1f;还是算逻辑的具体实现&#xff1f; 作者 | Anne Trafton 译者 | 火火酱 …

ChatGPT能代替Oracle DBA吗?用Oracle OCP(1z0-083)的真题测试一下。

让我们来看看ChatGPT不能通过Oracle OCP的考试&#xff1f; 文章目录 引言测试过程总结和分析 关于博主&#xff0c;姚远&#xff1a; Oracle ACE&#xff08;Oracle和MySQL数据库方向&#xff09;。Oracle MAA 大师。华为云MVP。《MySQL 8.0运维与优化》的作者。拥有 Oracle …

跳出打工人的困局!程序员该怎么创业?

一位十二年的程序员老友和我说&#xff0c;他的公司倒闭了&#xff0c;现在准备清算&#xff0c;创业之初他带着梦想与对未来的期待踏出了这一步&#xff0c;没想到才短短两年就落得一场空。他对我表达出内心的不舍、惆怅&#xff0c;让我在聊天的过程也感同身受&#xff0c;个…

为啥大龄程序员不选择自己创业呢?

目录 程序员路在何方&#xff1f; 程序员是靠吃青春饭的吗&#xff1f; 程序员的第一个职业生涯阶段 大龄程序员更能理解创业的不易&#xff01; 大龄程序员负担很重&#xff0c;导致不敢闯 经历时间的筛选&#xff0c;优劣已分 程序员共有的特点&#xff0c;技术和创业…

漫谈程序员系列:程序员该不该考虑初创公司

IT 这个行业&#xff0c;最不缺的就是机会&#xff0c;追逐机会的&#xff0c;有各种各样的小公司&#xff0c;也有各种种样的程序员。 创业公司 每一个出来创业的人&#xff0c;心中都充满了希望和梦想&#xff0c;而且认为自己眼光独到&#xff0c;手段高超&#xff0c;一定…

腾讯再次劝退高龄员工,IT人的中年危机,我来教你化解!

最近&#xff0c;又在网上刷到一条以前的新闻&#xff1a;腾讯开始认真劝退高龄员工。 新闻里&#xff0c;腾讯对高龄员工的定义是&#xff0c;80-85年出生的&#xff0c;尚未成为高管的员工。 而程序员就更是如此&#xff0c;敲代码只能吃青春饭&#xff0c;过了那个年纪&…

九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭

今天A股三大股指低开低走。沪深两市收盘共37股涨停。剔除4只ST股&#xff0c;合计33股涨停。另外&#xff0c;10股封板未遂&#xff0c;整体封板率为78.72%。 涨停战场&#xff1a; 华工科技封单资金超3亿元 从收盘涨停板封单量来看&#xff0c;同方股份封单量最高&#xff0…

量化中获取A股交易日信息

问题背景&#xff1a; 在获取近N日的交易品种数据时&#xff0c;例如想要获取近十天涨停过的股票&#xff0c;我们先要得到这N个交易日的日历数据。而akshare的封装函数ak.tool_trade_date_hist_sina()可以获得一年内所有的交易日信息&#xff0c;但这还不是近N日交易日历&…

港联证券|4连板的AI+传媒概念股火了,近5亿资金抢筹

今天&#xff0c;沪深两市共51股涨停&#xff0c;除掉10只ST股&#xff0c;合计41股涨停。别的&#xff0c;11股封板未遂&#xff0c;全体封板率为81%。 涨停战场&#xff1a;长江传媒封单量最高 从收盘涨停板封单量来看&#xff0c;长江传媒封单量最高&#xff0c;有39.96万手…

ChatGLM2-6B-Int4本地部署

文章目录 1、先看效果2、本地部署部署环境下载创建虚拟环境&#xff0c;安装库本地模型下载int-4推理web_demo.py遇到的问题 原文链接&#xff1a;http://wangguo.site/posts/9d8c1768.html ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本 GitHub地址&#xff1a…