Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?
Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?
フロントエンド開発では、多くの場合、画像をグレースケールまたは白黒に変換するなど、画像に特殊効果処理を実行する必要があります。 Vue では、いくつかの簡単なテクニックを使用してこれらの効果を実現できます。この記事では、Vue で画像のグレースケールおよび白黒処理を実装する方法を紹介し、対応するコード例を添付します。
グレースケール処理
グレースケール処理は、カラー画像を白黒画像に変換し、画像がグレースケール情報のみを持ち、カラー情報を持たないようにすることです。以下は、Vue でグレースケール処理を実装するコード例です。
<template> <div class="container"> <img class="original lazy" src="/static/imghw/default1.png" data-src="originalImage" : @load="convertToGrayscale" alt="Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?" > <img class="grayscale lazy" src="/static/imghw/default1.png" data-src="grayscaleImage" : v-show="grayscale" alt="Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?" > </div> </template> <script> export default { data() { return { originalImage: 'path/to/original/image.jpg', grayscaleImage: '', grayscale: false }; }, methods: { convertToGrayscale() { let canvas = document.createElement('canvas'); let ctx = canvas.getContext('2d'); let img = document.querySelector('.original'); canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); let data = imageData.data; for (let i = 0; i < data.length; i += 4) { let brightness = (data[i] + data[i + 1] + data[i + 2]) / 3; data[i] = brightness; data[i + 1] = brightness; data[i + 2] = brightness; } ctx.putImageData(imageData, 0, 0); this.grayscaleImage = canvas.toDataURL(); this.grayscale = true; } } }; </script> <style scoped> .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .original, .grayscale { max-width: 300px; } .grayscale { display: none; } </style>
上記のコードでは、<img class="original lazy" src="/static/imghw/default1.png" data-src="originalImage" alt="Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?" >
の src
属性を通じてバインドします。タグ オリジナルのカラー絵です。画像が読み込まれたら、convertToGrayscale
メソッドを使用して画像をグレースケールに変換します。このメソッドでは、canvas
要素を作成し、getContext('2d')
を通じてキャンバスのコンテキストを取得し、元の画像をキャンバスに描画します。次に、キャンバス上のピクセル データを取得し、各ピクセルの RGB 値を輝度値に変換し、次にピクセル データ内の RGB 値を輝度値に更新し、最後に更新されたピクセル データをキャンバスに戻します。最後に、キャンバスは toDataURL
メソッドを呼び出して画像の Base64 エンコードに変換され、グレースケール画像の src
属性にバインドされます。
上記のコードでは、Vue の scoped
スタイルを使用して、スタイル ルールが現在のコンポーネントにのみ適用されるようにしています。
白黒処理
白黒処理とは、カラー画像を白黒のみの画像に変換することです。以下は、Vue で白黒処理を実装するコード例です。
<template> <div> <img class="original lazy" src="/static/imghw/default1.png" data-src="originalImage" : @load="convertToBlackAndWhite" alt="Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?" > <img class="black-and-white lazy" src="/static/imghw/default1.png" data-src="blackAndWhiteImage" : v-show="blackAndWhite" alt="Vue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?" > </div> </template> <script> export default { data() { return { originalImage: 'path/to/original/image.jpg', blackAndWhiteImage: '', blackAndWhite: false }; }, methods: { convertToBlackAndWhite() { let canvas = document.createElement('canvas'); let ctx = canvas.getContext('2d'); let img = document.querySelector('.original'); canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); let data = imageData.data; for (let i = 0; i < data.length; i += 4) { let brightness = (data[i] + data[i + 1] + data[i + 2]) / 3; if (brightness > 128) { data[i] = 255; data[i + 1] = 255; data[i + 2] = 255; } else { data[i] = 0; data[i + 1] = 0; data[i + 2] = 0; } } ctx.putImageData(imageData, 0, 0); this.blackAndWhiteImage = canvas.toDataURL(); this.blackAndWhite = true; } } }; </script> <style scoped> .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .original, .black-and-white { max-width: 300px; } .black-and-white { display: none; } </style>
上記のコードでは、グレースケール処理と同様に、canvas
要素も作成し、元のカラー画像を描画します。キャンバスの真ん中まで。次に、キャンバス上のピクセルデータを取得し、各ピクセルのRGB値を輝度値に変換します。違いは、輝度値をしきい値 128 と比較することにより、128 を超える輝度を持つピクセルを白として設定し、128 未満の輝度を持つピクセルを黒として設定することです。最後に、ピクセル データをキャンバスに戻し、toDataURL
メソッドを呼び出してキャンバスを画像の Base64 エンコードに変換します。最後に、Vue のデータ バインディングを介してページ上に白黒画像を再度表示します。
以上はVueで画像のグレースケール処理と白黒処理を実装する方法とサンプルコードです。これらのテクニックは、フロントエンド開発においてさまざまな画像の特殊効果を実現するのに役立ちます。この記事がお役に立てば幸いです!
以上がVue で画像のグレースケールおよび白黒処理を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Vue で ECharts を使用すると、アプリケーションにデータ視覚化機能を簡単に追加できます。具体的な手順には、ECharts および Vue ECharts パッケージのインストール、ECharts の導入、チャート コンポーネントの作成、オプションの構成、チャート コンポーネントの使用、Vue データに対応したチャートの作成、対話型機能の追加、および高度な使用法の使用が含まれます。

質問: Vue におけるエクスポートのデフォルトの役割は何ですか?詳細説明: エクスポートデフォルトは、コンポーネントのデフォルトのエクスポートを定義します。インポートすると、コンポーネントが自動的にインポートされます。インポートプロセスを簡素化し、明確さを改善し、競合を防ぎます。一般に、名前付きエクスポートとデフォルト エクスポートの両方を使用して、個々のコンポーネントをエクスポートし、グローバル コンポーネントを登録するために使用されます。

Vue.js マップ関数は、各要素が元の配列の各要素の変換結果である新しい配列を作成する組み込みの高階関数です。構文は、map(callbackFn) です。callbackFn は、配列内の各要素を最初の引数として受け取り、オプションでインデックスを 2 番目の引数として受け取り、値を返します。 map 関数は元の配列を変更しません。

Vue.js では、event はブラウザによってトリガーされるネイティブ JavaScript イベントですが、$event は Vue コンポーネントで使用される Vue 固有の抽象イベント オブジェクトです。 $event はデータ バインディングをサポートするようにフォーマットおよび拡張されているため、一般に $event を使用する方が便利です。ネイティブ イベント オブジェクトの特定の機能にアクセスする必要がある場合は、event を使用します。

onMounted は、Vue のコンポーネント マウント ライフ サイクル フックです。その機能は、コンポーネントが DOM にマウントされた後に、DOM 要素への参照の取得、データの設定、HTTP リクエストの送信、イベント リスナーの登録などの初期化操作を実行することです。コンポーネントが更新された後、またはコンポーネントが破棄される前に操作を実行する必要がある場合は、他のライフサイクル フックを使用できます。

Vue.js でモジュールをエクスポートするには、エクスポートとデフォルトのエクスポートの 2 つの方法があります。 export は名前付きエンティティのエクスポートに使用され、中括弧の使用が必要です。export default はデフォルト エンティティのエクスポートに使用され、中括弧は必要ありません。インポートする場合、エクスポートによってエクスポートされたエンティティはその名前を使用する必要がありますが、エクスポートのデフォルトによってエクスポートされたエンティティは暗黙的に使用できます。複数回インポートする必要があるモジュールにはデフォルトのエクスポートを使用し、一度だけエクスポートするモジュールにはエクスポートを使用することをお勧めします。

Vue フックは、特定のイベントまたはライフサイクル ステージでアクションを実行するコールバック関数です。これらには、ライフサイクル フック (beforeCreate、mounted、beforeDestroy など)、イベント処理フック (クリック、入力、キーダウンなど)、およびカスタム フックが含まれます。フックはコンポーネントの制御を強化し、コンポーネントのライフサイクルに対応し、ユーザーの操作を処理し、コンポーネントの再利用性を向上させます。フックを使用するには、フック関数を定義し、ロジックを実行してオプションの値を返すだけです。

Vue.js イベント修飾子は、次のような特定の動作を追加するために使用されます。 デフォルト動作の防止 (.prevent) イベント バブリングの停止 (.stop) ワンタイム イベント (.once) イベントのキャプチャ (.capture) パッシブ イベント リスニング (.passive) アダプティブ修飾子 (.self)キー修飾子 (.key)
