支付宝小程序媒体组件 图片·Image

2020-09-18 11:11 更新

图片。支持 JPG、PNG、SVG、WEBP(iOS 不支持动图)、GIF 等格式。

使用说明

使用 webview 嵌套 H5 时,若遇到图片资源不显示问题,可参考 配置 H5 白名单流程 获取 H5 页面中所有的域名地址(含图片静态资源的地址),全部加入域名白名单中。

扫码体验

示例代码

  1. <!-- API-DEMO page/component/image/image.axml -->
  2. <view class="page">
  3. <view class="page-description">图片</view>
  4. <view class="page-section" a:for="{{array}}" a:for-item="item">
  5. <view class="page-section-title">{{item.text}}</view>
  6. <view class="page-section-demo" onTap="onTap">
  7. <image class="image"
  8. data-name="{{item.mode}}"
  9. onTap="onTap"
  10. mode="{{item.mode}}" src="{{src}}" onError="imageError" onLoad="imageLoad" />
  11. </view>
  12. </view>
  13. </view>
  14. // API-DEMO page/component/image/image.js
  15. Page({
  16. data: {
  17. array: [{
  18. mode: 'scaleToFill',
  19. text: 'scaleToFill:不保持纵横比缩放图片,使图片完全适应',
  20. }, {
  21. mode: 'aspectFit',
  22. text: 'aspectFit:保持纵横比缩放图片,使图片的长边能完全显示出来',
  23. }, {
  24. mode: 'aspectFill',
  25. text: 'aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来',
  26. }, {
  27. mode: 'widthFix',
  28. text: 'widthFix:宽度不变,高度自动变化,保持原图宽高比不变',
  29. }, {
  30. mode: 'top',
  31. text: 'top:不缩放图片,只显示图片的顶部区域',
  32. }, {
  33. mode: 'bottom',
  34. text: 'bottom:不缩放图片,只显示图片的底部区域',
  35. }, {
  36. mode: 'center',
  37. text: 'center:不缩放图片,只显示图片的中间区域',
  38. }, {
  39. mode: 'left',
  40. text: 'left:不缩放图片,只显示图片的左边区域',
  41. }, {
  42. mode: 'right',
  43. text: 'right:不缩放图片,只显示图片的右边边区域',
  44. }, {
  45. mode: 'top left',
  46. text: 'top left:不缩放图片,只显示图片的左上边区域',
  47. }, {
  48. mode: 'top right',
  49. text: 'top right:不缩放图片,只显示图片的右上边区域',
  50. }, {
  51. mode: 'bottom left',
  52. text: 'bottom left:不缩放图片,只显示图片的左下边区域',
  53. }, {
  54. mode: 'bottom right',
  55. text: 'bottom right:不缩放图片,只显示图片的右下边区域',
  56. }],
  57. src: '/image/ant.png',
  58. },
  59. imageError(e) {
  60. console.log('image 发生 error 事件,携带值为', e.detail.errMsg);
  61. },
  62. onTap(e) {
  63. console.log('image 发生 tap 事件', e);
  64. },
  65. imageLoad(e) {
  66. console.log('image 加载成功', e);
  67. },
  68. });
  69. /* API-DEMO page/component/image/image.acss */
  70. .page-section-demo {
  71. display: flex;
  72. justify-content: space-around;
  73. }
  74. .image {
  75. background-color: red;
  76. width: 100px;
  77. height: 100px;
  78. }

属性

属性 类型 默认值 描述 最低版本
src String - 图片地址。 -
mode String scaleToFill 图片模式。 -
class String 外部样式 - -
style String 内联样式 - -
lazy-load Boolean false 支持图片懒加载,不支持通过 css 来控制 image 展示隐藏的场景。 1.9.0
default-source String - 默认图片地址,若设置默认图片地址,会先显示默认图片,等 src 对应的图片加载成功后,再渲染对应的图片。 1.19.0
onLoad EventHandle - 图片载入完毕时触发,事件对象 event.detail = {height: '图片高度px', width: '图片宽度px'} -
onError EventHandle - 当图片加载错误时触发,事件对象 event.detail = {errMsg: 'something wrong' -
onTap EventHandle - 点击图片时触发。 -
catchTap EventHandle - 点击图片时触发,阻止事件冒泡。 -

注意:image 组件默认宽度 300px、高度 225px

mode

mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式。

缩放模式

属性 描述
scaleToFill 不保持纵横比缩放,使图片的宽高完全拉伸至填满 image 元素。
aspectFit 保持纵横比缩放,使图片的长边能完全显示出来。也就是说,可以完整地将图片显示出来。
aspectFill 保持纵横比缩放,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。
widthFix 宽度不变,高度自动变化,保持原图宽高比不变。

裁剪模式

属性 描述
top 不缩放图片,只显示顶部区域。
bottom 不缩放图片,只显示底部区域。
center 不缩放图片,只显示中间区域。
left 不缩放图片,只显示左边区域。
right 不缩放图片,只显示右边区域。
top left 不缩放图片,只显示左上边区域。
top right 不缩放图片,只显示右上边区域。
bottom left 不缩放图片,只显示左下边区域。
bottom right 不缩放图片,只显示右下边区域。

说明:图片高度不能设置为 auto,如果需要图片高度为 auto,直接设置 mode 为 widthFix。

常见问题

image 标签支持读取流文件吗?

小程序中显示二进制数据流的图片,需要先将二进制数据转成 base64 字符串,然后把 base64 字符串放在 image 中的 src 中实现显示。

真机调用 image 组件,显示的图片被压缩?

建议把 mode 值设为 widthFix。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号