キャンバス要素は、Web ページ上にグラフィックを描画するために使用されます。 HTML5 の Canvas 要素は、JavaScript を使用して Web ページ上に 2D 画像を描画します。長方形領域のキャンバス上に、JavaScript は 2D グラフィックを描画し、ピクセルごとにレンダリングします。キャンバス要素は、パス、長方形、円、文字の描画、画像の追加など、さまざまな方法で使用できます。この記事では、Canvas と画像圧縮のサンプル コードを共有します。
Canvas画像圧縮処理
次に、Canvas画像圧縮の具体的な処理を具体例を挙げて説明します。
1. ローカル画像入力
1. ローカル ファイルの取得
<!--HTML--> <input type="file" id="choose-img" />
// JS var chooseImg = document.getElementById("choose-img"); chooseImg.onchange = function(e){ var file = this.files[0]; // …… (省略部分代码后续依次展示,下同) };
は非常に簡単で、type file のボタンからローカル ファイルを取得するだけです。
2. 取得したローカルファイルの種類を決定します
<!--HTML--> <p id="result"></p>
// JS var result = document.getElementById("result"); // 用于显示图片输出结果,或者错误提示 if(/image/.test(file.type)){ // 判断文件类型是否为图片 // …… } else{ result.innerHTML = '<span style="color: red;">文件类型有误!</span>'; }
3. 取得したローカルイメージをbase64形式で出力します
var img = new Image(), // 创建图片对象,用于放置原始图片 reader = new FileReader(); reader.readAsDataURL(file); // 以base64格式读取并存入FileReader对象的result属性中 reader.onload = function(){ img.src = this.result; // 将图片base64字符串直接赋予Image对象的src中 document.body.insertBefore(img,chooseImg); // 将输出的图片插入到文件按钮之前 img.onload = function(){ // …… }; };
2番目、絵を描くキャンバスで
1. キャンバスを作成します
var canvas = document.createElement('canvas'); canvas.width = img.clientWidth; canvas.height = img.clientHeight; var context = canvas.getContext('2d');
注: キャンバスのサイズは、入力した画像の幅と高さと同じです。
2.絵を描く
context.drawImage(img,0,0,canvas.width,canvas.height);
3.絵を圧縮して出力
<!--HTML--> 图片压缩比率 : <input id="rate" type="number" min="0" max="100" /> %
// JS var rate = document.getElementById("rate").value || 100; // 输入图片压缩比率,默认为100% var imgUrl = canvas.toDataURL(file.type,rate/100); // 第一个参数为输出图片类型,第二个为压缩比 result.innerHTML = '压缩后:<img src="'+ imgUrl +'" />'; // 将压缩后的图片置于result中显示 img.style.display = 'none'; // 将原始图片隐藏
ここでもbase6 4に基づいていますフォーマット出力。
4. 完全なコードの表示
<!--HTML--> 图片压缩比率 : <input id="rate" type="number" min="0" max="100" /> %
// JS var chooseImg = document.getElementById("choose-img"), result = document.getElementById("result"); chooseImg.onchange = function(e){ var file = this.files[0]; if(/image/.test(file.type)){ var img = new Image(), reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(){ img.src = this.result; document.body.insertBefore(img,chooseImg); img.onload = function(){ var canvas = document.createElement('canvas'); canvas.width = img.clientWidth; canvas.height = img.clientHeight; var context = canvas.getContext('2d'); context.drawImage(img,0,0,canvas.width,canvas.height); var rate = document.getElementById("rate").value || 100; var imgUrl = canvas.toDataURL(file.type,rate/100); result.innerHTML = '压缩后:<img src="'+ imgUrl +'" />'; result.style.display = 'block'; img.style.display = 'none'; }; }; } else{ result.innerHTML = '<span style="color: red;">文件类型有误!</span>'; } };
テストの結果、Canvas を介して JPEG 形式の画像を圧縮するのが最も効果的であることが判明しましたが、PNG 圧縮の効果は明らかではなく、場合によっては大きくなります。
上記の内容はCanvasと画像圧縮のサンプルコードです。皆様のお役に立てれば幸いです。
関連する推奨事項:
キャンバスを使用してパーティクルファウンテンアニメーションの効果を作成する方法
HTML5 の Canvas で一般的に使用される描画テクニック
画像ダウンロード機能を実装するキャンバスを使ったHTML5のサンプル詳細説明
以上がCanvas と画像圧縮のサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。