>Java >java지도 시간 >Java 이미지 처리 곱셈 효과를 위한 구현 코드

Java 이미지 처리 곱셈 효과를 위한 구현 코드

黄舟
黄舟원래의
2017-09-29 10:14:592761검색

곱셈 효과는 우리가 포토샵에서 흔히 볼 수 있는 효과입니다. 다음 글에서는 자바를 사용하여 곱셈의 효과를 얻는 방법을 주로 소개합니다. 이 글에서는 자세한 내용을 제공합니다. 샘플 코드는 모두가 참고할 수 있는 것입니다. 공부가 필요한 친구들은 아래의 자세한 소개를 참고해 보세요.

머리말

이 글에서는 주로 Java를 사용하여 곱셈 효과를 얻는 방법을 소개하고 참고 및 학습을 위해 공유합니다. 아래에서는 자세히 설명하지 않겠습니다. 자세한 소개를 살펴보겠습니다. .

Multiply는 Photoshop의 혼합 모드입니다. 간단히 말해서 두 레이어의 내용을 혼합할 수 있습니다.


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의 도구 모음 이미지(로컬 다운로드)에 배치했습니다. 다음은 직접 수정하고 사용할 수 있는 Nutz 호출 예제입니다.

예를 들어 진 장군에게 태양을 추가해보자:


진 장군

Big Sun


// 先获取两张图片
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"));

출력 결과 사진:


큰 태양 진, 하하 , 하지만 이 태양 선택이 좀 횡포하진 않네요

물론 이 코드는 사실 한줄로 작성해도 됩니다


Images.write(Images.multiply(Images.read(new File("金将军.jpg")), Images.read(new File("大太阳.jpg")), 0, 0), new File("大太阳金将军.jpg"));

아주 간단하지 않나요^_^

  • 기본적인 이미지 처리

  • 더 보기 고급 방법

요약

위 내용은 Java 이미지 처리 곱셈 효과를 위한 구현 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.