微信インタフェースの写真アップロード
3385 ワード
問題の初志:用、アンドロイドシステムの下でカメラを呼び出すことができなくて、そのため微信の提供するインタフェースを呼び出すことを選択します
問題: 1.2.0以降のJSDKでは、chooseImage apiを使用して返されるlocalldはサポートされていません.たとえば、「img src=wxLocalR」esource://50114659201332」というように画像をプレビューします.適合推奨:JSDKを直接1.2.0最新バージョンにアップグレードすると、ページの自動適合を支援できますが、一部のシーンでは無効になる可能性があります(iosシステムではできません)、getLocalImgDataインタフェースを使用して直接データを取得できます. iOSではlocalIdで画像をプレビューすることはサポートされていないので、getLoaclImgDataを使っていると思いますが、IOSは確かに大丈夫ですが、AndroidではgetLoaclImgDataプレビュー画像機能のサポートが悪く、プログラムが死んだり反応が遅くなったりします.だから異なるシステムに対して異なるインタフェースを選択するしかなくて、このようにアンドロイドとiosはすべて
/*wx.chooseImage */
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: function (res) {
$('.u_content').hide();
var localId = res.localIds[0];
document.getElementById('image').src = localId;
// alert('localData:'+localData);
// , $('#image').width() 0
img.onload=function(){
var w1=img.width;
var h1=img.height;
var h2=parseInt($('#image').height());
var w2=parseInt(h2/h1*w1);
$('.select_btn').css({'width':w2+'px','height':h2+'px','margin-left':-w2/2+'px'});
$('#image').css({'width':w2+'px','margin-left':-w2/2+'px'});
}
img.src=localId;
/*wx.getLocalImgData */
wx.getLocalImgData({
localId: localId,
success: function (res) {
var localData = res.localData;// localData base64 , img
//
if(!localData.split(',')[1]){
localData = 'data:image/jpeg;base64,'+localData;// base64 'data:image/jpeg;base64,' ,
}else{
//localData = localData.replace('jgp', 'jpeg');
document.getElementById('image').src = localData;
img.onload=function(){
var w1=img.width;
var h1=img.height;
var h2=parseInt($('#image').height());
var w2=parseInt(h2/h1*w1);
$('.select_btn').css({'width':w2+'px','height':h2+'px','margin-left':-w2/2+'px'});
$('#image').css({'width':w2+'px','margin-left':-w2/2+'px'});
}
img.src=localData;
}
imgUrl=convertBase64UrlToBlob(localData);
alert('imgUrl:'+imgUrl);
},
fail:function(){
alert(' ');
}
});
/*wx.getLocalImgData */
問題: