问题简述:以前开发时也碰到查看大图就模糊的问题,查阅资料知道是css3的3d渲染导致图片模糊,但由于uni.previewImage是uniapp内置组件,不能修改,所以就一直放着在,今天做项目又用到了uni.previewImage,经过苦思冥想想到一个折中的办法来解决,那就是mixin且只需两步就能解决,灰常nice!

解决步骤:

1、新建一个mixin.js, 复制下面代码到里面:

function v(a, b) {return +((1000 * a - 1000 * b) / 1000).toFixed(1)
}
module.exports = {created() {if (this._setTransform) {this._setTransform = (x, y, scale, source = '', r, o) => {if (!(x !== null && x.toString() !== 'NaN' && typeof x === 'number')) {x = this._translateX || 0}if (!(y !== null && y.toString() !== 'NaN' && typeof y === 'number')) {y = this._translateY || 0}x = Number(x.toFixed(1))y = Number(y.toFixed(1))scale = Number(scale.toFixed(1))if (!(this._translateX === x && this._translateY === y)) {if (!r) {this.$trigger('change', {}, {x: v(x, this._scaleOffset.x),y: v(y, this._scaleOffset.y),source: source})}}if (!this.scale) {scale = this._scale}scale = this._adjustScale(scale)scale = +scale.toFixed(3)if (o && scale !== this._scale) {this.$trigger('scale', {}, {x: x,y: y,scale: scale})}var transform = 'translateX(' + x + 'px) translateY(' + y + 'px) scale(' + scale + ')'this.$el.style.transform = transformthis.$el.style.webkitTransform = transformthis._translateX = xthis._translateY = ythis._scale = scale}}},destroyed() {//解决预览模式关闭后,和重复开关预览模式this._setTransform函数无限次执行导致手机卡顿的问题if (this._FA) {this._FA.cancel()}if (this._SFA) {this._SFA.cancel()}},methods: {}
}

2、在main.js里面导入你刚刚创建的mixin.js,并执行全局混入操作:

// main.js
import Vue from 'vue';
import App from './App';//...省略的代码import mixin from '@/mixin/mixin.js'
Vue.mixin(mixin);//...省略的代码

完结,问题解决,O(∩_∩)O!

适用环境:已测试的环境:h5端没问题,其他端我没测试过,有空的小伙伴可以测试了回来反馈一下。

仍存在的问题:

1、双指缩放完毕后图片仍然模糊,但只要单指轻微移动一下就会变成清晰的了;

2、当图片未放大时,左右拖动图片接触边界回弹时会导致【this._setTransform】方法会被无限次执行,在下一次执行移动和缩放时才会停止,但不影响正常使用。(不清楚是不是官方代码的bug还是我修改后产生的bug,不过既然清晰度问题已经解决,就懒得管了)

3、就算退出预览模式【this._setTransform】方法还是会在后台无限次执行,如果重复开关预览模式还会导致手机越来越卡;(不清楚这个问题是不是官方代码存在的问题,我暂时解决的方法是执行destroyed里面的方法)

【uniapp】解决uni.previewImage图片模糊问题相关推荐

  1. 解决canvas导出图片模糊问题

    // 解决导出图片模糊的方法toBeCanvas() {var copyDom = $("#canvasQR");var width = copyDom.offsetWidth; ...

  2. uni-app 解决富文本图片溢出问题

    解决前 在js中获取后台的富文本数据后,使用 replace 设置图片的宽度为100% <template><view class="container"> ...

  3. 用uni.previewImage({}) 来直接做图片的预览和识别二维码

    需求: 客户要求用户不用截图保存,通过直接用手机识别二维码关注,所以,这就需要我们进行图片的预览即可以解决. <image src="https://lr-huayoushi.oss- ...

  4. uni-app插入本地背景图片不能超过40kb解决方法

    uni-app插入本地背景图片不能超过40kb解决方法 参考文章: (1)uni-app插入本地背景图片不能超过40kb解决方法 (2)https://www.cnblogs.com/gygg/p/1 ...

  5. 移动端高清适配方案(解决图片模糊问题、1px细线问题)

    移动端高清适配方案(解决图片模糊问题.1px细线问题) 参考文章: (1)移动端高清适配方案(解决图片模糊问题.1px细线问题) (2)https://www.cnblogs.com/superliz ...

  6. 论文图片模糊问题的解决

    最近用WPS写了本科毕业论文.感觉WPS确实可能比较low,以后可能写论文不会再用,不过还是把WPS插入图片的一些注意事项记录下来,也给其他写材料的人一些参考.(我想word 也应该同理) 在向文档中 ...

  7. Html设置背景图模糊,CSS设置背景图片模糊内容不模糊的解决方法

    需求:一个div设置了background: url,现在需要使图片背景模糊,div内的文字清晰显示. 解决方法:内容和图片分别置于一个div,通过css设置背景div模糊度,设置内容div绝对位置, ...

  8. CANVAS drawImage 绘图图片模糊已解决

    CANVAS drawImage 绘图图片模糊解决 不可以在CSS中定死canvas画布的长宽, 在绘图时给出canvas宽高 具体JS代码: const canvas = document.getE ...

  9. uni-app用uni.chooseImage API调用相机或从相册中选择图片

    uni-app用uni.chooseImage API调用相机或从相册中选择图片 chooseImage: function() {var _this = this;uni.chooseImage({ ...

最新文章

  1. dataframe,python,numpy 问题索引2
  2. 设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
  3. Python入门基础教程 Working with Python – Introductory Level
  4. 败家玩意儿!Redis 竟然浪费了这么多内存!
  5. 黑马程序员--java基础--其他对象
  6. 【大学课程】操作系统知识点
  7. PHP 进程的实现与管理
  8. redis的基础命令操作
  9. python进程数上限_python-使用multiprocessing.Process并发进程数最多
  10. 录音转文字python实现
  11. python 类 对象 知乎_Python 基础入门(八)类与对象 学习小结
  12. 穿越熊市?用 Python 自制指数估值图
  13. YOUKU播放器 研究
  14. 记一次服务器被攻击后的经历
  15. 炒菜模型——各种编程范式
  16. echarts柱状图的样式调整及应用
  17. u盘在计算机硬盘量,电脑硬盘指示灯一直亮怎么办
  18. C++对象模型——Member的各种调用方式(第四章)
  19. 传奇开服架设要具备什么条件
  20. android图片下载到本地

热门文章

  1. linux 保存文件名乱码怎么办,Linux 文件名编码转换 乱码 解决办法
  2. Proteus仿真——用两片74HC148及少量逻辑门构成16线--4线优先级编译器
  3. python爬虫(五)爬虫实战
  4. 计算机网络三网,七律四首(手机、电视、计算机网络、三网融合)
  5. 模板有函数模板和类模板,这个在上学期的java课里面就学了,C++应该是一样的。
  6. ds oracle connector 连接组件,DataStage 错误集(持续更新)
  7. dnf一直接收服务器信息失败怎么办,dnf接收频道信息失败
  8. 通过注册表方式启动和关闭手写输入法(方法适合各种应用)
  9. 工具相关累计 慢慢更新防止忘记
  10. 爬取了 36141 条评论数据,解读 9.5 分的《海王》是否值得一看