乗算効果は、Photoshop でよく見られる効果です。次の記事では、Java を使用して乗算の効果を実現する方法を主に紹介します。この記事では、詳細を説明します。サンプル コードは、すべての人の参考になります。必要な友達はそれを参照してください。以下の詳細な紹介を見てみましょう。
はじめに
この記事では主に Java を使用して乗算効果を実現する方法を紹介し、参考と学習のために共有します。以下では多くを述べません。詳細な紹介を見てみましょう。 。
乗算は、Photoshop のブレンド モードです。簡単に言えば、2 つのレイヤーのコンテンツをブレンドできます。
PS の最良のデモンストレーション使用例
融合の計算式は実際には非常に単純で、A*B/255 です。 (A と B はレイヤー A とレイヤー B を指します)
さらに説明すると:
レイヤー A の赤チャンネルとレイヤー B の赤チャンネルに対応する各ピクセルのグレースケールの値が乗算され、 255で割ります。新しい赤いチャンネルを取得します。 青チャンネルと緑チャンネルについても同様です。
実装方法
実際には、特定のチャネルのピクセルのグレースケール値を、対応するRGB値に直接置き換えることができます。次のコードは、このプロセスを説明するために使用されます。
最初に、後で使用するピクセルに基づいて対応する RGB 配列を取得するメソッドをカプセル化します
public static int[] getRGB(int pixel) { int r = (pixel >> 16) & 0xff; int g = (pixel >> 8) & 0xff; int b = pixel & 0xff; return new int[]{r, g, b}; }
次に、画像ピクセルを走査し、走査プロセス ポイントは省略され、直接処理段階に入ります
// 先获取两个图层同一位置的像素值 int pixelA = imgA.getRGB(x, y); int pixelB = imgB.getRGB(x, y); // 获取两组RGB数组 int[] rgb1 = getRGB(pixelA); int[] rgb2 = getRGB(pixelB); // 根据公式分别计算新的RGB值 int r = rgb1[0] * rgb2[0] / 255; int g = rgb1[1] * rgb2[1] / 255; int b = rgb1[2] * rgb2[2] / 255; // 获得正片叠底后的像素值 int pixelNew = new Color(r, g, b).getRGB();
新しいピクセルを直接取得して、新しい画像に設定するだけです。
このメソッドは私によってカプセル化され、ツールバーに配置されました。Nutz の画像 (ローカル ダウンロード) 直接呼び出すことができます。これは変更して直接使用できます。
たとえば、ジン将軍に太陽を追加しましょう:
ジン将軍
ビッグサン
// 先获取两张图片 BufferedImage imgA = Images.read(new File("金将军.jpg")); BufferedImage imgB = Images.read(new File("大太阳.jpg")); // 正片叠底 BufferedImage imgMultiply = Images.multiply(imgA, imgB, 0, 0); // 输出到文件 Images.write(imgMultiply, new File("大太阳金将军.jpg"));
出力結果の画像:
ビッグサンジン将軍、笑、しかしこの太陽 その選択は少し横暴ではありません
もちろん、このコードは実際には1行で書くことができます
Images.write(Images.multiply(Images.read(new File("金将军.jpg")), Images.read(new File("大太阳.jpg")), 0, 0), new File("大太阳金将军.jpg"));
とても簡単ですね^_^
基本的な画像処理
さらに表示高度な方法
概要
以上がJava画像処理乗算効果の実装コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。