이미지에서 픽셀 배열을 추출하는 방법
Java에서는 BufferedImage에서 int[][] 배열로 픽셀 데이터를 얻으면 특정 픽셀에 직접 액세스합니다. 이를 달성하는 몇 가지 방법은 다음과 같습니다.
BufferedImage의 getRGB() 메서드 사용
이 메서드는 알파, 빨간색, 녹색 및 파란색 값을 단일 int로 결합하고 그것을 반환합니다. 개별 색상 구성요소를 추출하려면 색상 마스크를 검색하고 그에 따라 값을 이동해야 합니다. 이 접근 방식은 상대적으로 간단하지만 가장 효율적이지는 않습니다.
픽셀 배열에 직접 액세스
다음 코드를 사용하면 픽셀 배열을 바이트로 직접 액세스할 수 있습니다. 배열:
byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
이 방법은 특히 대규모의 경우 getRGB() 방법보다 훨씬 빠릅니다.
성능 비교
성능 차이를 입증하기 위해 12,000 x 12,000픽셀 이미지를 사용하여 테스트를 진행했습니다. 다음 표에서는 두 메서드의 실행 시간을 비교합니다.
Method | Average Time |
---|---|
getRGB() | 16 seconds |
Direct Access | 1.5 seconds |
결론
DataBufferByte 클래스를 사용하여 픽셀 배열에 직접 액세스하는 것은 효율적인 픽셀을 위해 권장되는 접근 방식입니다. 시장 조작. getRGB() 메서드에 비해 특히 큰 이미지를 처리할 때 상당한 성능 이점을 제공합니다.
위 내용은 Java의 BufferedImage에서 픽셀 데이터를 배열로 효율적으로 추출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!