ホームページ >ウェブフロントエンド >uni-app >uniappから返された画像が表示されない場合はどうすればよいですか?

uniappから返された画像が表示されない場合はどうすればよいですか?

PHPz
PHPzオリジナル
2023-04-23 09:13:431338ブラウズ

最近、uniapp を使用してモバイル アプリケーションを開発しているときに、返された画像が表示されないという問題が発生しました。今日は、私がこの問題をどのように解決したかを共有します。

まず、uniappについて簡単に紹介したいと思います。これは、Vue.js フレームワークに基づくクロスプラットフォーム アプリケーション開発フレームワークであり、HTML、CSS、JavaScript を使用して iOS および Android アプリケーションを構築できます。 uniapp を使用すると、プラットフォームごとに個別に開発することなく、一度コードを作成して複数のプラットフォームで実行できるようになります。

トピックに戻りますが、アプリでカメラまたはギャラリーを開いて写真を選択すると、写真はカメラまたはギャラリーからアプリに返されますが、アプリには表示されません。コードを確認したところエラーはなかったので、画像へのパスが間違っていると画像が表示されないため、画像へのパスが正しいか確認することにしました。

画像のパスを確認したところ、問題は画像のアドレスにあることがわかりました。 uniappでは通常base64エンコードを使用して画像を表示しますが、私のアプリケーションではbase64エンコードを使用せず、画像の実際のパスを使用しました。そのため、画像が正しく表示されません。

この問題を解決するには、base64 エンコードを使用するようにコードを変更する必要があります。 Vue.js では、 btoa() メソッドを使用してファイルを Base64 エンコーディングに変換できます。以下は私が変更したコードです。

getLocalImgUrl: function (file) {
  return new Promise((resolve) => {
    var reader = new FileReader();
    reader.onloadend = function () {
      resolve(reader.result);
    }
    reader.readAsDataURL(file);
  })
},

この関数は、ファイルを Base64 エンコードに変換し、base64 エンコードされた結果を文字列として返します。写真を選択した後、この関数を呼び出し、返された Base64 エンコーディングを Vue.js コンポーネントの data プロパティに保存します。変更されたコードは次のとおりです:

chooseImage: function () {
  var that = this;
  uni.chooseImage({
    count: 1,
    success: function (res) {
      that.getLocalImgUrl(res.tempFiles[0]).then((result) => {
        that.localImage = result; // 将base64编码的字符串存储在data属性中
      });
    }
  });
},

写真を選択してアプリに戻ると、画像がアプリに正常に表示されます。この問題は解決されました。

要約すると、uniapp は非常に実用的なクロスプラットフォーム アプリケーション開発フレームワークです。アプリケーションを正常に開発するには、コードを再チェックし、画像パスが正しいこと、base64 エンコードが使用されていることなどを確認する必要があります。私の経験が同様の問題に遭遇した開発者の助けになれば幸いです。

以上がuniappから返された画像が表示されない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。