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>組件中顯示圖像