最新のウェブサイトやアプリケーションでは、レトロスタイルのフィルター効果がよく使用され、ユニークな雰囲気と感情を絵にもたらすことがよくあります。 PHPはリッチな画像処理ライブラリを提供します。その中には、 ImageConvolution関数は非常に強力なツールであり、さまざまな特殊効果を実現するために畳み込みフィルターを画像に適用できます。今日は、 ImageConvolution関数を使用してレトロフィルター効果を作成する方法を共有します。
畳み込みフィルターは、フィルターマトリックス(または畳み込みカーネル)を画像の各ピクセルに適用することにより、画像の色と明るさを変える画像処理テクノロジーです。各ピクセルの出力値は、周囲のピクセルの加重平均に依存し、重量はフィルターマトリックスの値によって決定されます。異なるフィルターマトリックスを使用することにより、シャープニング、ぼやけ、エッジ検出、その他の効果の効果を実現できますが、レトロフィルターは特定のマトリックスを使用して画像をノスタルジックで温かいスタイルにします。
PHPでは、 ImageConvolutionは畳み込み操作を実行するために使用される関数です。その基本的な使用法は次のとおりです。
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imageconvolution</span></span><span> ( resource </span><span><span class="hljs-variable">$image</span></span><span> , </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$matrix</span></span><span> , </span><span><span class="hljs-keyword">float</span></span><span> </span><span><span class="hljs-variable">$divisor</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> )
</span></span>
$画像:処理する必要がある画像リソース。
$ matrix :畳み込みカーネル、つまり2次元配列は、各ピクセルの重み係数を定義します。
$ divisor :マトリックスの数値、通常はマトリックス値の合計を正規化するために使用されます。
$ offset :明るさを調整するために使用される畳み込み計算結果にオフセットが追加されました。
画像の読み込み<br> まず、フィルターを適用するために画像をロードする必要があります。さまざまな形式の画像は、ImageCreatefromJpeg()やImageCreateFrommpng()などの関数を介してロードできます。
レトロフィルターマトリックスの定義<br> レトロフィルターの鍵は、適切な畳み込みカーネルを使用することです。これは、画像のトーンをわずかに暖かくし、黄色と赤の成分を強化できるシンプルなレトロスタイルのフィルターマトリックスです。
<span><span><span class="hljs-variable">$matrix</span></span><span> = [
[</span><span><span class="hljs-number">0.1</span></span><span>, </span><span><span class="hljs-number">0.2</span></span><span>, </span><span><span class="hljs-number">0.1</span></span><span>],
[</span><span><span class="hljs-number">0.2</span></span><span>, </span><span><span class="hljs-number">1.0</span></span><span>, </span><span><span class="hljs-number">0.2</span></span><span>],
[</span><span><span class="hljs-number">0.1</span></span><span>, </span><span><span class="hljs-number">0.2</span></span><span>, </span><span><span class="hljs-number">0.1</span></span><span>]
];
</span></span>
このマトリックスの機能は、画像の色を微妙に強化および調整し、画像にソフトレトロ効果を与えることです。
畳み込み操作を適用します<BR> ImageConvolution関数を使用して、上記のマトリックスを画像に適用します。レトロ効果を達成するために、適切な除数とオフセット値を設定します。
<span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'your-image.jpg'</span></span><span>); </span><span><span class="hljs-comment">// 写真の読み込み</span></span><span>
</span><span><span class="hljs-variable">$divisor</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-comment">// 正規化なし</span></span><span>
</span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// 輝度オフセットはありません</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imageconvolution</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$matrix</span></span><span>, </span><span><span class="hljs-variable">$divisor</span></span><span>, </span><span><span class="hljs-variable">$offset</span></span><span>); </span><span><span class="hljs-comment">// 畳み込みフィルターを適用します</span></span><span>
</span></span>
画像を保存または出力<br> 処理が完了したら、 ImageJPeg() 、 ImagePng() 、およびその他の機能を使用して、処理された画像をファイルとして保存するか、ブラウザに直接出力できます。
<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>); </span><span><span class="hljs-comment">// 処理された画像を出力します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>); </span><span><span class="hljs-comment">// 画像リソースを破壊します,無料のメモリ</span></span><span>
</span></span>
色相と飽和を調整します<br> 畳み込み操作に加えて、レトロ効果をより明確にするために、調整トーン、飽和、コントラストなど、他の画像処理手法を使用することもできます。これらの調整により、画像のレトロスタイルがより顕著になります。
ノイズ効果を増やす<br> レトロスタイルの画像には、多くの場合、画像がより年齢のように見えるようにするノイズが伴います。これらの効果は、単純なランダムノイズ関数によってシミュレートできます。
フィルターとぼかし効果の組み合わせ<br> レトロフィルターは、ぼやけた効果と組み合わせて使用して、古い写真の感覚をさらにシミュレートできます。たとえば、Gaussian Blurフィルターと組み合わせたImageFilter()関数を使用すると、画像の柔らかさが増加する可能性があります。
<span><span><span class="hljs-title function_ invoke__">imagefilter</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, IMG_FILTER_GAUSSIAN_BLUR); </span><span><span class="hljs-comment">// ガウスブルール</span></span><span>
</span></span>
グラデーションの背景を使用してください<br> レトロフィルターが背景のある画像に適用されている場合は、背景にグラデーション効果を追加して、ノスタルジックな大気をさらに強化してみてください。
レトロカラーマトリックス<br> また、赤と緑の重量を増やして青を減らしてレトロな黄色または赤のトーンを作成するなど、RGBコンポーネントの重量を調整することにより、カラーバイアスを変更することもできます。
PHPのImageConvolution関数を使用してレトロフィルター効果を作成すると、画像の外観を変更するためのシンプルで効果的な方法を提供するだけでなく、畳み込みカーネルやその他の画像処理技術を調整することにより、より豊富なレトロ効果も可能になります。これらの手法を柔軟に適用することにより、より芸術的な画像処理効果をWebページやアプリケーションに追加して、ユーザーがよりノスタルジックな視覚体験をもたらすことができます。