出现场景

在本地调试的时候本地图片显示,但是手机浏览的时候本地图片不显示。

出现图片不显示的原因

小程序只支持网络路径和base64的图片。图片转base64在线工具

处理方法

  1. 将图片都放到服务器,然后直接采用网络路径。
    1.1 优点是能够放大量的图片。
    1.2 缺点是有时开发中有大量的小图片,或者修改小图标,对于开发者来说,更换会很麻烦。

  2. 将图片都转换成 base64 的图片保存,使用时直接引入。图片转base64在线工具
    2.1 优点是方便快捷,开发过程中容易更换。
    2.2 缺点是由于微信小程序规定了每个文件不能超过500MB,超过另行打包。所以如果图片过大,或者量过大,都不方便。

优化处理

将网络路径图片和 base64 的图片结合使用。图片转base64在线工具

  1. 开发大图片(轮播等)或图片量大(商品图片等)的场景时,采用网络路径。

    优点是产品发布后方便图片的上下架,不用再提交审核,使用静态图片的尴尬和麻烦。

  2. 开发logo、导航等小图片时,采用 base64 的图片。图片转base64在线工具

    优点是开发时方便开发者更换,引入方便;转换快捷,用图片转base64在线工具可直接转换;不用开发时总是往服务器上传图片。

实践开发

开发效果图

首页的轮播和网吧列表都是采用的网络路径,订单页面的右箭头和更多商品图标都是采用的 base64 图片。

开发代码

1. 首页轮播和店铺列表JS
const app = getApp();
const urlList = require('../../utils/config.js');
Page({data: {supplierList: [],iconList: iconList,bannerInfo: null,indicatorDots: true,//是否显示面板指示点autoplay: true,//是否开启自动切换interval: 3000,//自动切换时间间隔duration: 500,//滑动动画时长bannerList: [],shopList: [],currentPage: 1,pageSize: 10,total: 1000,myList: []},onLoad(){// 获取分享信息this.getShare();},onShow(){// 获取轮播列表this.getBannerList();// 获取当前地址wx.getLocation({success: res => {if (res.errMsg == 'getLocation:ok') {this.getShopList(res);}},fail: res => {this.wetoast.toast({ title: '获取定位失败,请打开定位,重新进入!' });}})},// 获取店铺列表getShopList(obj){// 判断是否还有更多数据if (!app.loadMoreData(this)) { return }// 请求数据let account = wx.getStorageSync('accountInfo');let location = obj;wx.request({url: urlList.shopListUrl,data: {// accountID: account.accountID,// passWord: account.passWord,longitude: location.longitude,latitude: location.latitude,currentPage: this.data.currentPage,pageSize: this.data.pageSize,sType: '1',token: app.globalData.token},success: res => {if(res.data.state == 'true'){console.log(res)this.setData({shopList: this.data.shopList.concat(res.data.data.supplierList),currentPage: ++this.data.currentPage,total: res.data.data.total,__noMoreData__: app.loadSuccessData(this, res.data.data.supplierList)})}else{console.log('网吧列表:' + res.data.exception)this.wetoast.toast({ title: '网吧列表加载失败!' });}}})},// 获取轮播列表getBannerList(){wx.request({url: urlList.advertPicListUrl,data: { appID: '4'},success: res => {if (res.data.state == 'true') {// console.log(res.data.data.picList)this.setData({bannerList: res.data.data.picList})}else{console.log('轮播列表:' + res.data.exception)this.wetoast.toast({ title: '轮播列表加载失败!' });}}})},//滚动加载onReachBottom(){this.getShopList(app.globalData.location);}
})
1. 首页轮播和店铺列表WXML
<scroll-view  scroll-y="true"><swiper class="rui-swiper" style='height:{{bannerInfo.height}}px' current="0" indicator-dots="{{indicatorDots}}" vertical="{{vertical}}"autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}"indicator-color="rgba(0,0,0,.5)" indicator-active-color="#fff"><block wx:for-items="{{bannerList}}" wx:key="banner"><swiper-item><block wx:if="{{item}}">// 读取轮播图片的网络路径<image class="rui-full" bindtap='bannerUrl' data-banner="{{item}}" style='width:{{bannerInfo.width}}px;height:{{bannerInfo.height}}px' src="{{item.picUrl}}"></image></block><block wx:else><image class="rui-full" style='width:{{bannerInfo.width}}px;height:{{bannerInfo.height}}px' src="../../images/default_pic.png"></image></block></swiper-item></block></swiper>
</scroll-view> <!--网吧列表  -->
<view wx:if="{{shopList.length > 0}}" class='rui-shop-sort'>附近网吧</view>
<view wx:if="{{shopList.length > 0}}" wx:for="{{shopList}}" wx:key="shopList"><view class='rui-shop-list' bindtap='goToGoodsList' data-shopid="{{item.shopID}}">// 读取网吧列表的网吧图片的网络路径<image class='rui-shop-img' src='{{item.sPicS}}'></image><view class='rui-shop-box'><view class='rui-shop-name'>{{item.userName}}<text class='rui-icon' wx:if="{{item.ishot == 1 && index < 3}}" style="background:url({{iconList.hotUrl}}) no-repeat center center/15px 15px;height:15px;width:15px;"></text></view><view class='rui-shop-distance'><text style='margin-right:10px;color:#ff8e32;' wx:if="{{item.labels.length > 0 && labelsIndex < 4}}" wx:for-index="labelsIndex" wx:for="{{item.labels}}" wx:key="labels" wx:for-item="labels">{{labels}}</text><text class='rui-fr'>{{item.gpsDistance}}</text></view><view class='rui-shop-address'>地址:{{item.corpAddress}}</view><view class='rui-shop-active' wx:if="{{item.activeDesc}}"><text>{{item.activeDesc}}</text><text class='active'>惠</text></view></view></view>
</view>
2. 订单页的右箭头和更多商品JS
const app = getApp();
const urlList = require('../../utils/config.js');
const iconList = require('../../utils/iconPath.js');
Page({data: {currentPage: 1,pageSize: 10,total: 1000,orderList: [],__noMoreData__: {isMore: false,title: '正在加载更多数据了...'}},onPullDownRefresh(){this.setData({currentPage: 1,pageSize: 10,total: 1000,orderList: [],__noMoreData__: {isMore: true,title: '正在加载更多数据了...'}})setTimeout(() => { this.getOrderList();},1000);},onLoad(){// 将 base64 的文件保存到当前page的data中this.setData({ iconList: iconList });},onShow(){// 获取订单列表this.getOrderList();},// 获取订单列表getOrderList(){// 判断是否还有更多数据if (!app.loadMoreData(this)){return}// 请求数据wx.request({url: urlList.orderListUrl,data: { currentPage: this.data.currentPage,pageSize: this.data.pageSize,token: app.getToken()},success: res => {// console.log(res)app.withData(res, this, res => { if (res.data.state == 'true'){// console.log(res.data.data.orderList)this.setData({currentPage: ++this.data.currentPage,total: res.data.data.total,orderList: this.data.orderList.concat(res.data.data.orderList)})wx.stopPullDownRefresh();}})}})},// 滚动到底部加载onReachBottom() {this.getOrderList();}
})
2. 订单页的右箭头和更多商品WXML
<view class='rui-order-li' wx:for="{{orderList}}" wx:key="orderList"><view class='rui-order-head'><view class='rui-order-shop-name' data-shop='{{item}}' bindtap='goToShop'>{{item.userName}}// 读取右箭头的base64的图片<text class='rui-icon' style='background:url({{iconList.moreUrl}}) no-repeat center center/8px 15px;height:15px;width:15px;'></text></view><view class='rui-order-state {{item.orderState == 0 ? "rui-colory" : item.orderState == 4 ? "rui-colorg" : "rui-colorp"}}'>{{item.orderStateText}}</view></view><view class='rui-order-goodslist' id='{{item.orderID}}' bindtap='getOrderId'><view class='rui-fl'><image wx:for="{{item.goodsList}}" wx:if="{{goodsnum < 5}}" wx:for-index="goodsnum" wx:key="goodsList" wx:for-item="goods" class='rui-order-goodsimg' src="{{goods.sPics}}"></image>// 读取更多商品的base64的图片<view class='rui-order-detail-btn' style='background:url({{iconList.moreGoodsUrl}}) no-repeat center center/25px 5px;'></view></view><view class='rui-order-price'><view class='rui-colory'>¥{{item.goodsAmountAll}}</view><view class='rui-colorp rui-fs12'>共{{item.totalGoodsNum}}件</view></view></view><view class='rui-order-head'>{{item.orderTime}}<view wx:if="{{item.orderState == 0}}" class='order-btn' data-orderid="{{item}}" bindtap='goToPay'>立即支付</view><view wx:if="{{item.orderState == 4}}" class='order-btn' data-orderid="{{item}}" bindtap='repeatBuy'>再次购买</view></view>
</view>

base64 的保存文件编辑

const iconPath = {starUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo4OWIzY2I4MC1jMGU1LTQxNGMtODg4My0yNjNjODQ1MTRjOWUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODg1REFBQjg0Nzg2MTFFOEJBNzc5NDg4NzE1MUY0QUMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODg1REFBQjc0Nzg2MTFFOEJBNzc5NDg4NzE1MUY0QUMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZmUyYzhkYWYtOTUyZi0yYjRlLWFjODYtNzY3OGM2NzNmNDA1IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZmJjNjU3ZTktNDQ3Ny0xMWU4LWJjNzUtZjgyODA4NzM1M2M1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+p+ef2gAAAMhJREFUeNpi/N9nxIADlEPp1UB8D12SEY/G/zA12CSZGHCD93jk8Go8S0ijEhCnAbEgA3EgFIiNmaCMmUB8F0q7YFEMMrwDiN8B8SqQRSxQv+yBakiD4ntILjgDsgHNC/eQQ1UQ5gwojez01VDD98CihgUtFGch8dOQbEhHD2UmHBGfBrWlE+qCDnRFLGj8NKii90i2uCD5uxObjcgmhyE5DcbuQHI+isYOaIB0QgMBBkA2VaD5G8WprlD/dWLx9yyoofDAAwgwAIUJMVmp6d19AAAAAElFTkSuQmCC'
}
module.exports = iconPath;

base64 的保存文件引入

const iconList = require('../../utils/iconPath.js');

base64 的保存文件使用

js

// 将 base64 的文件保存到当前page的data中
this.setData({ iconList: iconList });

wxml

// 读取更多商品的base64的图片
<view class='rui-order-detail-btn' style='background:url({{iconList.moreGoodsUrl}}) no-repeat center center/25px 5px;'></view>

总结

解决问题的方法有很多,只要找到适合自己的最好。个人建议微信小程序的图片可以两种方式结合使用。

其他

我的博客,欢迎交流!

我的CSDN博客,欢迎交流!

微信小程序专栏

前端笔记专栏

微信小程序实现部分高德地图功能的DEMO下载

微信小程序实现MUI的部分效果的DEMO下载

微信小程序实现MUI的GIT项目地址

微信小程序实例列表

前端笔记列表

游戏列表

转载于:https://www.cnblogs.com/linewman/p/9918434.html

微信小程序----相对路径图片不显示相关推荐

  1. 微信小程相对图片路径_微信小程序----相对路径图片不显示

    出现场景 在本地调试的时候本地图片显示,但是手机浏览的时候本地图片不显示. 出现图片不显示的原因 小程序只支持网络路径和base64的图片.图片转base64在线工具 处理方法 将图片都放到服务器,然 ...

  2. 微信小程序设置背景图片不显示问题解决方法

    最近开发小程序的过程中遇到了这样一个小问题,在wxss文件中通过background设置背景图片,要实现背景图片上显示文字的效果,发现背景图片不显示,设置背景图片的代码如下: .test {width ...

  3. 微信小程序中base64图片的显示与保存

    当我们拿到如下base64格式的数据时: 显示 使用image标签,src属性添加data:image/png;base64, (注意:若imgData返回数据中含有data:image/png;ba ...

  4. 微信小程序背景图真机显示不了

    微信小程序在本地开发工具正常显示图片(包括背景图),在真机显示不了,常见的几种情况: 1.微信小程序背景图真机显示不了 微信小程序如何设置背景图片? | 微信开放社区 微信小程序设置背景图片不显示问题 ...

  5. 为什么微信小程序里的图片在电脑上显示在手机上不显示?

    <image class='carousel' src="/images/图片301@2x.png"></image> 电脑上显示图片,但手机上是空白的 & ...

  6. 微信小程序设置本地图片的背景,开发工具可以,手机端不显示

    let base64 = wx.getFileSystemManager().readFileSync('/images/videoCover.jpg', 'base64') this.setData ...

  7. 微信小程序如何把图片上传至服务器

    微信小程序如何把图片上传至服务器 前些日子接了个任务就是开发一个小程序,遇到了一个问题就是需要图片上传至服务器并保存记录,遵循着解决思路我们先从最开始入手 1:微信上传接口 2:服务器接收接口 3:保 ...

  8. 微信小程序加载并且编译显示富文本编辑器内容

    微信小程序如何加载并且显示百度编辑器中的内容 一. 下载wxParse文件夹放在根目录下(可以随意更改位置,只要后续能引入成功即可) 二. 在js文件中引入wxParse.js var WxParse ...

  9. 微信图片 自动上传到服务器,微信小程序怎样使图片上传至服务器

    这次给大家带来微信小程序怎样使图片上传至服务器,微信小程序使图片上传至服务器的注意事项有哪些,下面就是实战案例,一起来看一下.-wxml 发布项目 /**选择图片 */ choose: functio ...

最新文章

  1. python读音有道词典-利用python实现命令行有道词典的方法示例
  2. js aes加密_nodejs中使用Crypto-JS对图片进行加解密
  3. phpdocumentor生成代码注释文档(linux)
  4. UE4学习-创建基于C++的场景
  5. pandas中DataFrame对象to_csv()方法中的encoding参数
  6. 华为年度旗舰Mate 30 Pro真机现身,既惊喜又失望...
  7. android activty动画,Activity动画效果
  8. 自动化用例设计原则+web自动化框架
  9. 学习笔记===《用户体验要素——以用户为中心的产品设计》
  10. 无线短距通信技术标准:WIFI,蓝牙,ZigBee
  11. [转]送给和我一样曾经浮躁过的PHP程序猿
  12. atomic的安全性?
  13. 关于maven下载依赖失败问题
  14. Linux下安装软件命令详解
  15. springboot 调用Jxbrowser内嵌浏览器
  16. minist数据集图片查看
  17. Gradle的神奇之处
  18. 中山大学2021级研究生学术道德规范在线考试学习资料
  19. .NET WebAPI 微信网页授权的实现(一)前端篇
  20. VUE 前端PDF分页预览、下载

热门文章

  1. 原子自增_多线程系列-(六)原子类与CAS(了解即可)
  2. mysql 游标的用途及使用方法
  3. python支持哪些平台开发_【后端开发】python能兼容哪些平台
  4. 最大似然估计_机器学习最大似然估计
  5. mysql导出表到新建_用navicat导出mysql的数据库后,再用navicat导入到新建的数据库,报错。...
  6. matlab fft2 opencv,基于OPENCV的FFT2变换
  7. xp 无法运行 php.exe,【xpexe文件不能执行】xp exe文件打不开_xp系统exe文件打不开-系统城...
  8. python all 函数_Python all()函数
  9. java文件中获取创建日期_如何在Java中获取文件的上次修改日期
  10. AngularJS自定义指令教程第2部分