まず、検索して読みましたが、私はこの問題に関するSEの質問をすべて読んでいると思います。 (実際の例で)Image APIを使用して100MBを超える画像ファイルをプレビューすると、broswerがフリーズする
これは私が達成しようとしているものです:ユーザーがブラウザで画像を選択し、filereaderを使用してアップロードする前にプレビューを生成します。問題は、大きなファイル、50MB以上の画像、100MBの画像でぼろぼろです。
私は何十ものソリューションを試してきましたが、すべてがブラウザのUIをフリーズしているようです。良質のプレビューを生成するために、私はファイルリーダーとキャンバスを使用して画像を縮小します。私が気づいた何はダウンスケールし、補間が起こるとcanvas.toDataURL("image/png");
コール
中にときフリーズが起きてから(多分ウェブの労働者を使用して?)これを回避する方法はありますが起こるということですか?私が言ったように、私はいくつかのライブラリを試してスタックの質問の大部分を読んだが、この問題に関連するものは答えがない。
私はこれらの2つの問題に遭遇しました:
readAsDataURL
は50メガバイト/ 100MBの画像を超えるためにbase64でエンコードされた、非常に長い 行を返します(base64では、ファイル サイズよりも137パーセント大きいので、これはあります)システムメモリに保存 - そのイメージがロードされている間、canvas.toDataURL()
からページ全体がフリーズし、大きな画像をロードするときに、これはパフォーマンスの問題- かもしれません
これを行い、うまく動作し、いくつかの例を示し説明することができる人がいるなら、それはすばらしいでしょう。
例はChromeに適しています。 SafariとFirefoxでは、私が試した44MBの画像で数秒間ハングアップします。また、キャンバスをする必要があるのは、ユーザーが選択している画像を縮小して、画像の品質を維持したいからです。 – MMScreenX