ホームページ  >  記事  >  Java  >  Java画像処理乗算効果の実装コード

Java画像処理乗算効果の実装コード

黄舟
黄舟オリジナル
2017-09-29 10:14:592703ブラウズ

乗算効果は、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。