当前位置: 首页 > news >正文

图片编辑器tui-image-editor

提示:图片编辑器tui-image-editor

文章目录

  • 前言
  • 一、安装tui-image-editor
  • 二、新建components/ImageEditor.vue
  • 三、修改App.vue
  • 四、效果
  • 五、遇到问题 this.getResolve is not a function
  • 总结


前言

需求:图片编辑器tui-image-editor

一、安装tui-image-editor

npm install tui-image-editor --save

在这里插入图片描述

二、新建components/ImageEditor.vue

ImageEditor.vue

<template><div class="image_editor_box" ref="dcRef"><div id="tui_image_editor"></div><el-button class="image_save_btn" type="primary" size="small" @click="saveImage">保存</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 = {//菜单ZoomIn: '放大',ZoomOut: '缩小',Hand: '抓手工具',History: '历史',Undo: '撤销',Redo: '恢复',Reset: '重置',Delete: '删除',DeleteAll: '全部删除',//工具栏//尺寸调整Resize: '尺寸',Width: '宽度',Height: '高度','Lock Aspect Ratio': '锁定宽高比例',Apply: '应用',Cancel: '取消',//镜像Flip: '镜像','Flip X': 'X 轴','Flip Y': 'Y 轴',//蒙版Mask: '蒙版','Load Mask Image': '上传蒙版图片',//裁剪Crop: '裁剪',Square: '正方形',// 旋转Rotate: '旋转',Range: '区间',//画笔Draw: '画笔',Free: '曲线',Straight: '直线',Color: '颜色',//图形Shape: '图形',Rectangle: '矩形',Circle: '圆形',Triangle: '三角形',Fill: '填充',Stroke: '描边',//图标Icon: '图标',Arrow: '箭头','Arrow-2': '箭头2','Arrow-3': '箭头3','Star-1': '五角星','Star-2': '多角形',Polygon: '多边形',Location: '定位',Heart: '心形',Bubble: '气泡','Custom icon': '自定义图标',//文字Text: '文字',Bold: '加粗',Italic: '斜体',Underline: '下划线',Left: '左对齐',Center: '居中',Right: '右对齐','Text size': '字体大小',//滤镜Filter: '滤镜',Grayscale: '灰度',Sepia: '棕色',Blur: '模糊',Emboss: '浮雕',Invert: '底片',Sepia2: '棕色2',Sharpen: '锐化','Remove White': '除去白色',Distance: '距离',Brightness: '亮度',Noise: '铜板雕刻',Pixelate: '马赛克','Color Filter': '彩色滤镜',Threshold: '阈值',Tint: '色调',Multiply: '正片叠底',Blend: '混合色',Custom: '自定义',load: '上传',download:'下载',}  const IThemeConfig = {//图标'common.bi.image': 'https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF','common.bisize.width': '30px','common.bisize.height': '30px',//编辑器背景// 'common.backgroundImage': 'https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF','common.backgroundColor': '#fff','common.border': '1px solid #eee',// 菜单栏样式// 'header.backgroundImage': 'https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF','header.backgroundColor': 'transparent','header.border': '0 solid #000',// 上传按钮'loadButton.backgroundColor': '#ecf5ff','loadButton.border': '1px solid #409EFF','loadButton.color': '#409EFF','loadButton.fontFamily': "'Noto Sans', sans-serif",'loadButton.fontSize': '12px',// 下载按钮'downloadButton.backgroundColor': '#409EFF','downloadButton.border': '1px solid #409EFF','downloadButton.color': '#fff','downloadButton.fontFamily': "'Noto Sans', sans-serif",'downloadButton.fontSize': '12px',// 工具栏icon'menu.normalIcon.color': '#7A8799','menu.activeIcon.color': '#409EFF','menu.disabledIcon.color': '#A2AEBF','menu.hoverIcon.color': '#323D4D','menu.iconSize.width': '24px','menu.iconSize.height': '24px',// 工具栏子菜单'submenu.normalIcon.color': '#7A8799','submenu.activeIcon.color': '#323D4D',// 工具栏子菜单icon'submenu.iconSize.width': '24px','submenu.iconSize.height': '24px',// 工具栏子菜单bg'submenu.backgroundColor': '#eee',// 工具栏子菜单分割线'submenu.partition.color': '#7A8799',//工具栏子菜单文字'submenu.normalLabel.color': '#7A8799','submenu.normalLabel.fontWeight': '400','submenu.activeLabel.color': '#323D4D','submenu.activeLabel.fontWeight': '400',// 工具栏子菜单多选框'checkbox.border': '1px solid #7A8799','checkbox.backgroundColor': '#fff',// 工具栏子菜单进度条--滑块'range.pointer.color': '#409EFF',// 工具栏子菜单进度条--底色'range.bar.color': '#A2AEBF',// 工具栏子菜单进度条--进度'range.subbar.color': '#409EFF',// 工具栏子菜单进度条--禁用'range.disabledPointer.color': '#A2AEBF','range.disabledBar.color': '#A2AEBF','range.disabledSubbar.color': '#7A8799',// 工具栏子菜单进度条--值'range.color': '#7A8799','range.value.color': '#323D4D','range.value.fontWeight': '400','range.value.fontSize': '11px','range.value.border': '1px solid #A2AEBF','range.value.backgroundColor': '#fff','range.title.fontWeight': '400',// 颜色选择器'colorpicker.button.border': '1px solid #A2AEBF','colorpicker.title.color': '#7A8799',
};export default {props:{defaultImg:{type:Object,default:()=>{return {}},},defaultColorArr:{type:Array,default:()=>{return []},}},data() {return {imgEditor: null}},watch:{defaultImg(){this.imgEditor&&this.imgEditor.loadImageFromURL(this.defaultImg.path,this.defaultImg.name);}},mounted() {this.init(this.defaultImg);},methods: {//初始化ImageEditorinit(defaultImg) {this.imgEditor = new ImageEditor(document.getElementById('tui_image_editor'), {includeUI: {//加载图片loadImage: { path:defaultImg.path, name: defaultImg.name },//尺寸  裁剪  旋转  画笔  图形  图标  文字  镜像  滤镜  蒙版menu: ['resize', 'crop', 'rotate', 'draw', 'shape', 'icon', 'text', 'flip', 'filter', 'mask'], //不初始化 filter mask// 默认工具initMenu: '',// 工具栏位置              menuBarPosition: 'bottom', // 语言locale: locale,// 主题            theme: IThemeConfig        },// 最大宽度cssMaxWidth: (this.$refs.dcRef.clientWidth||1000)-80,// 最大高度cssMaxHeight: (this.$refs.dcRef.clientHeight||600)-64-48-80,uiSize: {width: '1000px',height: '700px'},selectionStyle: {cornerSize: 20,rotatingPointOffset: 70},picker:{}});//Load按钮文案改成上传const load = document.querySelector('.tui-image-editor-header-buttons>div');load.innerHTML = load.innerHTML.replace('Load','上传');//Download按钮文案改成下载const download = document.querySelector('.tui-image-editor-header-buttons .tui-image-editor-download-btn');download.innerHTML = "下载";},// 保存批注的图片saveImage() {let base64Str = this.imgEditor.toDataURL();let blob = this.base64ToBlob(base64Str);console.log(base64Str,blob);this.$emit('saveEditImgSrc',base64Str);},//base64转换成blobbase64ToBlob(base64Str) {let arr = base64Str.split(",");let type = arr[0].match(/:(.*?);/)[1];let bstr = atob(arr[1]);let n = bstr.length;let u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new Blob([u8arr], { type });}}}</script><style lang="scss" scoped>.image_editor_box {height: 100%;width: 100%;position: relative;.image_save_btn {position: absolute;width: 120px;height: 40px;right: 260px;top: 9px;background-color: #409EFF;border: 1px solid #409EFF;color: #fff;font-family: 'Noto Sans', sans-serif;font-size: 12px;border-radius: 40px;}}</style><style>/** 隐藏图标和上传下载按钮 **/.image_editor_box .tui-image-editor-header-logo,.image_editor_box .tui-image-editor-header-buttons{/* display: none!important; */}/* 调整图片显示位置 */.image_editor_box .tui-image-editor-main{top:48px!important;height:auto!important;}.image_editor_box .tui-image-editor-container .tui-image-editor-range-wrap label{color: #7A8799;}.image_editor_box .tui-image-editor-container .tui-image-editor-checkbox label > span {color: #7A8799;}.image_editor_box .tui-image-editor-container .tui-image-editor-controls{background-color: #fcfcfc;border:1px solid #eee;border-top:0;}.image_editor_box .tui-image-editor-help-menu.top{border:1px solid #eee;background: #fcfcfc;}.image_editor_box .tie-filter-tint-color[title="色调"] .color-picker-control,.image_editor_box .tie-filter-blend-color[title="混合色"] .color-picker-control{height: 160px!important;left: -74px!important;top: -170px!important;}</style>

在这里插入图片描述

三、修改App.vue

App.vue

<template><div id="app"><div class="img_mark_box"><div class="img_mark_l"><div class="img_mark_img" v-for="item,index in imgArr" :key="index" @click="changeImg(item)"><img :src="item.path" alt=""></div></div><div class="img_mark_m"><ImageEditor :defaultImg="activeImg" @saveEditImgSrc="saveEditImgSrc"></ImageEditor></div><div class="img_mark_r"><img :src="editImgSrc" alt=""></div></div></div>
</template><script>
import ImageEditor from "./components/ImageEditor";
export default {name: 'App',components:{ImageEditor},data(){return {activeImg:'',editImgSrc:'',imgArr:[{path:require('@/assets/test.jpg'),name:'图片1'},{path:`data:image/jpeg;base64,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`,name:'图片2'},{path:'https://t7.baidu.com/it/u=1819248061,230866778&fm=193&f=GIF',name:'图片3'},{path:'https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF',name:'图片4'},{path:'https://t7.baidu.com/it/u=825057118,3516313570&fm=193&f=GIF',name:'图片5'},{path:'https://t7.baidu.com/it/u=602106375,407124525&fm=193&f=GIF',name:'图片6'},{path:'https://t7.baidu.com/it/u=55748064,2074988836&fm=193&f=GIF',name:'图片7'},],}},created(){this.activeImg = this.imgArr[0];},methods:{changeImg(item){this.activeImg = item;},saveEditImgSrc(src){this.editImgSrc = src;},}
};
</script><style scoped >
.img_mark_box {position: absolute;top: 0;left: 0;bottom: 0;right: 0;padding: 0 200px 0 300px;box-sizing: border-box;
}
.img_mark_l,.img_mark_r{position: absolute;top: 0;bottom: 0;
}
.img_mark_l{left: 0;width: 300px;box-sizing: border-box;padding: 20px 10px;
}
.img_mark_img{height: 80px;box-sizing: border-box;vertical-align: middle;margin-bottom: 10px;overflow: hidden;border: 1px solid #eee;border-radius: 8px;cursor: pointer;
}
.img_mark_img>img{width: 100%;height: 100%;
}
.img_mark_r{right: 0;width: 200px;box-sizing: border-box;padding: 20px 10px;
}
.img_mark_r>img{width: 100%;
}
.img_mark_m{width: 100%;height: 100%;
}
</style>

在这里插入图片描述

四、效果

在这里插入图片描述

五、遇到问题 this.getResolve is not a function

问题:
在这里插入图片描述

sass-loader 版本过高,导致tui-image-editor的css无法解析

解决方案:

npm install sass-loader@7.3.1 --save-dev

报错内容:

Module build failed: TypeError: this.getResolve is not a functionat Object.loader (D:\node_modules\sass-loader\dist\index.js:52:26)@ ./node_modules/vue-style-loader!./node_modules/css-loader?{"sourceMap":true}!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-4913b0a8","scoped":true,"hasInlineConfig":false}!D:/node_modules/sass-loader/dist/cjs.js?{"sourceMap":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/ImageEditor.vue 4:14-385 13:3-17:5 14:22-393@ ./src/components/ImageEditor.vue@ ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/App.vue@ ./src/App.vue@ ./src/main.js@ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

总结

踩坑路漫漫长@~@

相关文章:

图片编辑器tui-image-editor

提示&#xff1a;图片编辑器tui-image-editor 文章目录 前言一、安装tui-image-editor二、新建components/ImageEditor.vue三、修改App.vue四、效果五、遇到问题 this.getResolve is not a function总结 前言 需求&#xff1a;图片编辑器tui-image-editor 一、安装tui-image-ed…...

如何使用“ubuntu移动文件、复制文件到其他文件夹“?

一、移动文件到其他文件夹命令 mv node_exporter-1.5.0.linux-amd64.tar.gz /usr/local/etc/prometheus 二、复制文件到其他文件夹命令 cp node_exporter-1.5.0.linux-amd64.tar.gz /home/master...

python实现B/B+树

python实现–顺序查找 python实现–折半查找 python实现–分块查找 python实现B/B树 B树和B树都是一种多路搜索树&#xff0c;用于对大量数据进行排序和查找。它们在数据库系统中被广泛应用&#xff0c;特别是用于构建索引结构。 B树&#xff08;B-Tree&#xff09; B树&…...

感觉捡到宝了!这究竟是哪位大神出的神器?

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…...

Vue教学17:Element UI基础组件上手,打造美观实用的Vue应用

大家好&#xff0c;欢迎回到我们的Vue教学系列博客&#xff01;在前十六篇博客中&#xff0c;我们学习了Vue.js的基础知识、安装Node.js与npm、使用Vue Devtools进行调试、Vue实例与生命周期钩子、数据绑定&#xff08;单向与双向&#xff09;、计算属性与侦听器、条件渲染和列…...

从政府工作报告探计算机行业发展(在医疗健康领域)

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…...

ElasticSearch学习篇10_Lucene数据存储之BKD动态磁盘树

前言 基础的数据结构如二叉树衍生的的平衡二叉搜索树通过左旋右旋调整树的平衡维护数据&#xff0c;靠着二分算法能满足一维度数据的logN时间复杂度的近似搜索。对于大规模多维度数据近似搜索&#xff0c;Lucene采用一种BKD结构&#xff0c;该结构能很好的空间利用率和性能。 …...

运维实习生 - 面经 - 游族网络

2024.3.5 Boss投递 2024.3.6 回复 2024.3.8过初筛 2024.3.13面试 确认候选人姓名 自我介绍 我看你更多是做数据分析的&#xff1f; 你是实习的时候才接触Linux&#xff1f; 软件工程不应该是往开发方面发展的吗&#xff1f; 你最近有做运维方面的工作吗&#xff0c;技术…...

SpringBoot接口添加IP白名单限制

实现流程&#xff1a; 自定义拦截器——注入拦截器——获取请求IP——对比IP是否一致——请求返回 文章背景&#xff1a; 接口添加IP白名单限制&#xff0c;只有规定的IP可以访问项目。 实现思路&#xff1a; 添加拦截器&#xff0c;拦截项目所有的请求&#xff0c;获取请求的…...

用postman进行web端自动化测试

前言 概括说一下&#xff0c;web接口自动化测试就是模拟人的操作来进行功能自动化&#xff0c;主要用来跑通业务流程。 主要有两种请求方式&#xff1a;post和get&#xff0c;get请求一般用来查看网页信息&#xff1b;post请求一般用来更改请求参数&#xff0c;查看结果是否正…...

基于Java+SpringBoot+vue+element疫情物资捐赠分配系统设计和实现

基于JavaSpringBootvueelement疫情物资捐赠分配系统设计和实现 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringBootvueelement疫情物资捐赠…...

(差分)胡桃爱原石

琴团长带领着一群胡桃准备出征&#xff0c;进攻丘丘人&#xff0c;出征前&#xff0c;琴团长根据不同胡桃的战力&#xff0c;发放原石作为军饷&#xff0c;琴团长分批次发放&#xff0c;每批次会给连续的几个胡桃发放相同的原石&#xff0c;琴团长最后想知道给每个胡桃发放了多…...

二级Java程序题--01基础操作:源码大全(all)

目录 1.基本操作&#xff08;源代码&#xff09;&#xff1a; 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.…...

伪分布HBase的安装与部署

1.实训目标 &#xff08;1&#xff09;熟悉掌握使用在Linux下安装伪分布式HBase。 &#xff08;2&#xff09;熟悉掌握使用在HBase伪分布式下使用自带Zookeeper。 2.实训环境 环境 版本 说明 Windows 10系统 64位 操作电脑配置 VMware 15 用于搭建所需虚拟机Linux系统 …...

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习&#xff1a;计时和文件处理-给算法计时-上机代码 上机代码&#xff1a; # 基本扩展模块训练 给算法计时 def factorial(number): # 自定义一个计算阶乘的函数i 1result 1 # 变量 result 用来存储每个数的阶…...

Sqllab第一关通关笔记

知识点&#xff1a; 明白数值注入和字符注入的区别 数值注入&#xff1a;通过数字运算判断&#xff0c;1/0 1/1 字符注入&#xff1a;通过引号进行判断&#xff0c;奇数个和偶数个单引号进行识别 联合查询&#xff1a;union 或者 union all 需要满足字段数一致&…...

【Golang星辰图】图像和多媒体处理的创新之路:Go语言的无限潜能

图像处理、音视频编辑&#xff0c;Go语言不再局限&#xff1a;揭秘opencv和goav的威力 前言: 在当今的数字时代&#xff0c;图像处理和多媒体技术在各个领域中的应用越来越广泛。无论是计算机视觉、图像处理还是音视频处理&#xff0c;选择合适的库和工具至关重要。本文将介绍…...

MES管理系统中电子看板都有哪些类型?

随着工业信息化和智能制造的不断发展&#xff0c;MES管理系统已经成为现代制造业不可或缺的重要工具。MES管理系统通过集成和优化生产过程中的各个环节&#xff0c;实现对生产过程的实时监控、调度和管理&#xff0c;提高生产效率和质量。 在生产制造过程中&#xff0c;看板管…...

【Flutter 面试题】await for 如何使用?

【Flutter 面试题】await for 如何使用&#xff1f; 文章目录 写在前面解答补充说明完整代码示例运行结果详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区专家博主&#xff0c;51…...

MongoDB聚合运算符:$dayOfWeek

$dayOfWeek返回日期中“星期”的部分&#xff0c;值的范围1-7&#xff0c;即Sunday~Saturday。 语法 { $dayOfWeek: <dateExpression> }参数说明&#xff1a; <dateExpression>为可被解析为Date、Timestamp或ObjectID的表达式<dateExpression>也可以是一个…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...