アップロード用画像の圧縮にcanvasを使用した例
2022-01-14 02:46:11
プラグインのuiとプロトタイプが異なるので、自分でメソッドを書きました。
まず、アップロードボタンが必要です。
<input type="file" id="fileys" class="fileys" @change="uploadFile($event)" accept=" image/*"/>
<! --uploadFile uses change because. The user may repeatedly select other images -->
本題に入る。
uploadFile:function(event){
let file = event.target.files[0]; // get the image file value of input
let param = new FormData(); // create form object
if(param.getAll('file')[0] == "undefined"){
return false // determine if it is empty
}
let reader = new FileReader()
reader.readAsDataURL(file) //read the file and save the file as a URL in the resulr property base64 format ,,, the online documentation seems to specify the format. I chose a base64
reader.onload = function(e) { // triggered when the file is read
let result = e.target.result // base64 format image address
var image = new Image()
image.src = result // set the image's address to the base64 address
image.onload = function(){
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
canvas.width = image.width; // set the canvas width of the canvas to the image width
canvas.height = image.height;
context.drawImage(image, 0, 0, image.width, image.height) // draw the image on the canvas
let dataUrl = canvas.toDataURL('image/jpeg', 0.001) // set the compression ratio, you can set it as needed, setting it too small will affect the image quality, dataUrl is the compressed image resource, you can upload it to the server
let tupian = _this.dataURLtoFile(dataUrl, file.name)
param.append('file', tupian);//corresponds to the background receiving the image name
//Then here you can write the axios method. Go and upload this param to the backend
}
}
}
以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層ご支援いただければ幸いです。
関連
-
html5ジャンプアプレット wx-open-launch-weappは落とし穴に踏み込んだ
-
携帯電話におけるHTML5によるフルスクリーン動画表示方式を実現
-
AmazeUIがモーダルボックスにフォームを埋め込んでモーダルインプットボックスを形成する
-
画像処理におけるキャンバスの活用
-
html5 android compatibility for mobile video (remove play control, full screen)(モバイルビデオ用アンドロイド互換性)。
-
postMessageを使用してiframeの高さを適応させる例
-
IOSキーボードがfocusoutイベントでしまわれたときに元の場所に戻らない問題を解決する
-
HTML5で実現する写真・カメラ機能
-
N種類のキャンバスエクスポートイメージのクロスドメインポーズサマリーのロックを解除する
-
ウェブアプリのページスクロールラグの解決策を詳しく解説
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Html5プロジェクト適応システムダークカラーモードプログラム概要の詳細説明
-
htmlテーブルのレンダリングバイオグラフィーとセル幅の不具合が解決される
-
画像アップロードとキャンバス圧縮処理の解析
-
動画下の自動再生プロパティが無効な場合の解決方法(ミュートプロパティを追加する)。
-
html5で漢字にピンインを付加するプログレスバーコード
-
html5 自動再生 mov形式動画サンプルコード
-
html2canvasを使ってcanvasにhtmlの内容を書き込んで画像を生成する方法
-
Canvasを使用したHD画面での描画がにじむ問題とその解決方法について
-
html5 目覚ましアプリミニノート
-
もしかしたら、これらがあなたの欲しいH5ソフトキーボード対応ソリューションかもしれません(要約)。