입력 이미지를 받아 Java에서 출력 이미지를 생성하는 리샘플링 함수를 작성해야합니다.Java에서 이미지 픽셀에 효율적으로 액세스
이미지 유형은 TYPE_BYTE_GRAY입니다.
모든 픽셀을 읽고 쓸 것이므로 이미지 버퍼에 액세스하는 효율적인 방법이 필요합니다.
저는 getRGB/setRGB와 같은 메소드가 변환을 수행하기 때문에 적절하다고 생각하지 않습니다. 필자는 효율적인 주소 계산, 이미지 복사 및 최소 오버 헤드로 저장된 버퍼에 대한 가장 직접적인 액세스를 허용하는 기능을 수행하고 있습니다.
도와 주시겠습니까? 예를 들어 WritableRaster를 사용하는 등 많은 종류의 예제를 발견했지만 충분하지는 않습니다.
업데이트는 :
@FiReTiTi에 의해 제안, 트릭은 이미지에서 WritableRaster
을 가져오고 DataBufferByte
대상으로 관련 버퍼를 얻을 수 있습니다.
DataBufferByte SrcBuffer= (DataBufferByte)Src.getRaster().getDataBuffer();
그런 다음 당신은 직접 getElem
/setElem
방법
SrcBuffer.setElem(i, getElem(i) + 1);
를 사용하여 버퍼에 액세스 할 수 또는 바이트
byte [] SrcBytes= SrcBuffer.getData();
SrcBytes[i]= SrcBytes[i] + 1;
두 방법 모두 작업의 배열을 추출 할 수있는 옵션이 있습니다. 아직 성능에 차이가 있다는 것을 알지 못합니다 ...
당신이 당신이 이미지에서 검색 픽셀로하십니까? – px06
@ px06 필자는 (사용자 지정) 리샘플링 함수를 작성하고 있지만 이것이 어떻게 영향을 미칠 수 있습니까? –
두 번째는 배열에 대한 직접 액세스를 시작하므로 더 빨라야합니다. 그러나 그것이 얼마나 더 빠를지는 확신 할 수 없다. 다행 했어. – FiReTiTi