> Java > java지도 시간 > Java BufferedImage에서 2D 픽셀 배열을 효율적으로 가져올 수 있습니까?

Java BufferedImage에서 2D 픽셀 배열을 효율적으로 가져올 수 있습니까?

Linda Hamilton
풀어 주다: 2024-12-28 09:28:11
원래의
478명이 탐색했습니다.

How Can I Efficiently Get a 2D Pixel Array from a Java BufferedImage?

Java - 이미지에서 2D 픽셀 배열 가져오기

BufferedImage에서 픽셀 값 배열을 가져오는 것은 시간이 많이 걸리는 작업일 수 있지만 특정 방법은 더 빠른 처리 시간을 제공합니다. .

한 가지 접근 방식은 중첩 루프에서 BufferedImage.getRGB()를 활용하는 것입니다. 녹색 및 파란색 값을 단일 정수로 변환합니다. 그러나 이 방법은 큰 이미지나 성능에 민감한 애플리케이션에는 적합하지 않습니다.

또는 ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData()를 사용하여 픽셀 배열에 직접 액세스하는 것은 상당히 더 빠르게. 이 접근 방식은 선택적으로 알파 채널을 포함하여 빨간색, 녹색 및 파란색 값에 대한 직접 액세스를 제공합니다.

대규모 12000x12000 픽셀 이미지로 수행한 성능 비교에서는 직접 픽셀 액세스 방법을 사용할 때 눈에 띄게 향상된 결과를 보여주었습니다. getRGB() 접근 방식은 각 실행에 약 16초가 소요되는 반면, 픽셀 배열에 직접 액세스하면 처리 시간이 단 1~2초로 단축되었습니다.

다음은 두 접근 방식을 비교한 코드 조각입니다.

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

...

// First method: Using BufferedImage.getRGB()
int[][] result1 = convertTo2DUsingGetRGB(hugeImage);

// Second method: Accessing pixel array directly
int[][] result2 = convertTo2DWithoutUsingGetRGB(hugeImage);

...

private static int[][] convertTo2DUsingGetRGB(BufferedImage image) {
    ...
    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {
            result[row][col] = image.getRGB(col, row);
        }
    }
    ...
}

private static int[][] convertTo2DWithoutUsingGetRGB(BufferedImage image) {
    ...
    final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    ...
    for (int pixel = 0, row = 0, col = 0; pixel + 3 < pixels.length; pixel += pixelLength) {
        ...
    }
    ...
}
로그인 후 복사

직접 픽셀 액세스 방법을 활용하면 특히 큰 이미지를 처리하거나 시간에 민감한 경우 이미지 처리 작업의 성능을 최적화할 수 있습니다. 응용 프로그램입니다.

위 내용은 Java BufferedImage에서 2D 픽셀 배열을 효율적으로 가져올 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿