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

云主机服务器租用wordpress 性能优化

云主机服务器租用,wordpress 性能优化,呼和浩特微信小程序公司,模板生成网站目录 为什么会有这边文章 辛酸历程,不看也罢 想解决问题,看这里就够了 问题已解决,后边还是废话 为什么会有这边文章 最近,做一个项目需要用在前端实现图片裁剪功能,毋庸置疑,cropperjs是不二选择。当在…

目录

为什么会有这边文章

辛酸历程,不看也罢

想解决问题,看这里就够了

问题已解决,后边还是废话


为什么会有这边文章

最近,做一个项目需要用在前端实现图片裁剪功能,毋庸置疑,cropperjs是不二选择。当在项目中安装了cropperjs的时候,发现已经是2.0版本了,于是去粗略的看了一眼官方的文档(文档地址),感觉只是用到基本的裁剪功能,应该不会有什么大的变动。。。

辛酸历程,不看也罢

就在一切看似风平浪静的时候,最后在将裁剪好的图片调用toDataURL()转成base64格式的时候,问题出现了,浏览器报错“Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.”得知是因为图片跨域问题造成的,顺手就把问题抛给AI,AI也很快给出了解决方案,接下来复制-粘贴-运行,还是报错,而后又百度搜索,也没有具体的案例。。。

无奈之下,就去啃文档上,但是始终没有发现关于跨域这部分的内容。。。瞬间整个人都不好了。。。

这里省去一万字废话。。。

期间,想过放弃使用2.0,改用1.0版本,但是想了想不能做个轻易放弃的人,还是决定用2.0版本。抱着最后的希望去看了2.0的源码,结合着文档,原来2.0使用了自定义元素,在运行的项目中审查元素,看到的也都是自定义的元素,而不再是div和span了。

<!--Cropper 的默认模板:-->
<cropper-canvas background><cropper-image></cropper-image><cropper-shade hidden></cropper-shade><cropper-handle action="select" plain></cropper-handle><cropper-selection initial-coverage="0.5" movable resizable><cropper-grid role="grid" bordered covered></cropper-grid><cropper-crosshair centered></cropper-crosshair><cropper-handle action="move" theme-color="rgba(255, 255, 255, 0.35)"></cropper-handle><cropper-handle action="n-resize"></cropper-handle><cropper-handle action="e-resize"></cropper-handle><cropper-handle action="s-resize"></cropper-handle><cropper-handle action="w-resize"></cropper-handle><cropper-handle action="ne-resize"></cropper-handle><cropper-handle action="nw-resize"></cropper-handle><cropper-handle action="se-resize"></cropper-handle><cropper-handle action="sw-resize"></cropper-handle></cropper-selection>
</cropper-canvas>

想解决问题,看这里就够了

总之,上边全是废话,看这里就可以解决这个问题,哈哈哈哈哈。。。

<!-- cropperImg.vue 省略了无关代码 -->
<template><!--...省略无关代码 --><img class="cropperImg" id="cropperImg" :src="state.imgUrl" /><el-button @click="getBase64">转base64</el-button>
</template><script lang="ts" setup>
import {onMounted, reactive} from "vue"
//...省略无关代码
const state = reactive({// cropper 实例cropper: undefined as any
});onMounted(() => {initCropper();
});// 初始化cropperjs实例
const initCropper = () => {nextTick(() => {state.cropper = new Cropper("#cropperImg");// 获取到上边的  cropper-image 自定义的dom元素,并设置crossorigin=“anonymous”即可// 没错!就这么简单,硬是搞了一天才解决state.cropper.getCropperImage().crossorigin = "anonymous";});
}//获取截图并转换成base64
const getBase64 = async () => {// 这里注意两点:// 1、获取的是 selection(也就是裁剪框选中的部分)的canvas画布内容,而不是 这个画布(getCropperCanvas().$toCanvas());// 2、2.0版本的cropperjs获取canvas内容改为了异步获取,所以这里需要用到 asnyc/awaitlet canvas = await state.cropper.getCropperSelection().$toCanvas();// 然后就可以正常将选框的部分转换成base64字符串了let base64 = canvas.toDataURL("image/jpeg");//...console.log("base64=", base64);
}
</script>

问题已解决,后边还是废话

上一篇博客还是2017年。。。已经过去了太长时间了,期间本人经历比较起伏,也比较曲折,不能多说了,说多了就显得矫情了,哈哈哈。。。

还是希望以后能简单纯粹一点,做个贪财好色的俗人。大龄码农,坚持把自己遇到的有价值的坑给大家分享一下,能坑一个是一个吧:)

唉唉唉,别着急撤!如果问题解决了,留个赞再走~

http://www.dtcms.com/wzjs/799419.html

相关文章:

  • 学校校园网站建设wordpress 调用内容代码
  • 获取网站缩略图正规网站制作全包
  • 广州网站建设建航科技公司页面设计与制作专业
  • 商务网站大全py和php做网站哪个好
  • 做彩票网站抓到判几年怎么注册公司微信号
  • 海南什么公司的网站公关公司排行
  • 留号码的广告网站营销型网站建设公司易
  • 资源分享类网站模板企业宣传推广方式
  • 青岛市住房和城乡建设局网站安徽大学电子信息工程学院官方网
  • 如何运营一个公众号潍坊网站建设wfxtseo
  • 浙江中联建设集团有限公司网站展示型网站建设方案
  • 莱州市建设局网站家政服务网站建设方案
  • dtcms网站开发云服务器可以自己搭建吗
  • 济南公众平台网站建设wordpress可以自动同步吗
  • 版式设计模板网站欧铂丽全屋定制价格每平米多少钱
  • 邹城网站建设公司建设一个网站需要条件
  • 购物网站的商品展示模块哔哩哔哩网页版怎么退出登录
  • 潍坊建站程序wordpress spam
  • 江油市建设局网站千锋教育成都校区
  • 公司建设网站公司广州工商注册服务中心
  • 南昌企业制作网站设计微信公众平台公众号
  • 手机做网站价格建设网站如
  • 网站建设终端是什么乔拓云建站平台
  • 二维码短链接生成器seo排名快速优化
  • 西宁做网站治愈君博i深圳网站建设公司麦
  • 计算机作业做网站网站 自助建站
  • 对门户网站建设的见解免费商城网站制作
  • 新乡网站建设公司网站内容转载
  • 网站设计方案范本九号线香网站建设
  • 牙科医院网站源码做网站建设公司怎么选