微信小程序開發實戰(24):選擇圖像

wx:chooseImage方法用於從相冊選擇若干圖像文件(1到n),或從相機拍攝圖像,並返回被選中圖像的臨時路徑,以便之後處理。javascript

wx:chooseImage方法有一個Object類型的參數,該參數值的屬性用於指定與圖像相關的各類信息,下面是這些屬性的描述。java

  • count:Number類型,可選屬性,表示最多能夠選擇的圖片張數,默認是9。小程序

  • sizeType:StringArray類型,可選屬性,表示圖像尺寸類型,可設置的值是original和compressed。前者表示原圖,後者表示壓縮圖。默認兩者都有,也就是容許用戶選擇是打開原圖仍是壓縮圖app

  • sourceType:StringArray類型,可選屬性,表示圖像來源,可設置的值是album和camera,前者表示從相冊選圖,後者表示用相機拍攝,默認兩者都有,也就是容許用戶選擇圖像來源函數

  • success:Function類型,必須屬性,成功則返回圖片的本地文件路徑列表 tempFilePaths測試

  • fail:Function類型,可選屬性,接口調用失敗的回調函數this

  • complete:Function類型,可選屬性,接口調用結束的回調函數(調用成功、失敗都會執行)code

 

下面的例子給出了一個簡單的演示,該程序經過點擊按鈕,執行wx:chooseImage方法來選取圖像,而後,將選取的圖像顯示在<image>組件中。xml

index.wxml接口

<view style="margin:20px">
<button bindtap="onClick">選擇圖像</button>
<image src="{{imageSrc}}" mode="aspectFit" style="margin-top:10px;width: 300px; height: 300px; background-color: #eeeeee;" />
</view>

index.js

var app = getApp()
Page({
data: {
imageSrc: ''   //  該變量與<image>組件綁定
  },
//選擇圖像
  onClick: function () {
var that = this;
    wx.chooseImage({
count: 1, // 最多隻容許選擇一個圖像
      sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {


        that.setData(
          {
imageSrc: res.tempFilePaths[0]    //  顯示選中的第一個圖像
          }
        )
//  輸出返回的路徑個數
console.log(res.tempFilePaths.length)
      }
    })
  }
})

因爲小程序模擬器和真機的差別,在模擬器和真機上測試wx:chooseImage方法的效果是不同的。例如,在模擬器上,無論sourceType屬性的值是什麼,都只會顯示一個圖像選擇對話框,容許從本地選取一個或若干圖像文件。而在真機上進行測試,根據sourceType屬性值的不一樣,會容許用戶有不一樣的選擇。

咱們如今模擬器上測試,點擊「選擇圖像」按鈕,會彈出一個如圖1所示的圖像選擇對話框(這是Mac OS X的對話框,Windows風格對話框請在Windows下測試)。無論count屬性的值是多少,該對話框都容許同時選擇多個圖像文件。不過,wx:chooseImage方法會根據count屬性的值,選擇前count個圖像文件。例如,count屬性值爲1,無論選擇了多少圖像文件,wx:chooseImage方法都只會選取第一個圖像文件,其餘的圖像文件被忽略。

圖1  圖像選擇對話框

本例中,sourceType屬性的值爲['album', 'camera'],也就是容許用戶決定從相冊選擇圖像,仍是從相機拍攝圖像。不太小程序模擬器目前不支持相機,因此在模擬器中只會顯示圖像選擇對話框。不過在真機上就不同了。在iPhone上測試,在屏幕的下方會出現如圖2的圖像源選擇菜單。

圖2  iPhone中圖像源選擇菜單

在Android手機上測試,會看到如圖3所示的圖像源選擇窗口,第一項是「拍攝照片」,其餘的是相冊中的圖像。

圖3  Android中的圖像源選擇窗口

若是sizeType屬性的值是['original', 'compressed'],在從相冊中選擇圖像後,點擊屏幕下方的「預覽」,會容許用戶選擇是否從原圖打開。iPhone的效果如圖4所示,Android的效果如圖4所示。

圖4  iPhone中選擇原圖的窗口

  圖5  Android中選擇原圖的窗口

若是不選擇原圖,系統會對原圖進行壓縮(圖像尺寸縮小處理),以減小對資源的消耗。當sizeType屬性的值是['original']或['compressed']時,在「預覽」窗口就不會出現「原圖」的選項,直接採用壓縮或原圖的方式處理圖像文件。

選擇圖像後,會在<image>組件中顯示已經選擇的圖像,效果如圖6所示。

圖6  在<image>組件中顯示圖像

相關文章
相關標籤/搜索