네트워크에서 원시 이미지를 읽는 중입니다. 이 이미지는 파일이 아닌 이미지 센서에서 읽었습니다. 원시 이미지에서 비트 맵을 얻는 방법
이
내가 이미지에 대해 알고있는 것들 :~ 높이 & 폭
~ (바이트) 전체 크기 난
~ 8 비트 그레이 스케일
~ 1 바이트/픽셀 이 이미지를 비트 맵으로 변환하여 이미지 뷰에 표시하려고합니다.
는 여기에 내가 뭘하려 : 그것은 내 이미지를 디코딩 할 수 없기 때문에
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.outHeight = shortHeight; //360
opt.outWidth = shortWidth;//248
imageBitmap = BitmapFactory.decodeByteArray(imageArray, 0, imageSize, opt);
decodeByteArray는 널를 반환합니다.
는 또한 첫번째 바이트 배열로 변환하지 않고, 상기 입력 스트림으로부터 직접 판독 시도 : 가imageBitmap = BitmapFactory.decodeStream(imageInputStream, null, opt);
이 아니라 널를 반환한다.
나는이 & 다른 포럼을 검색했지만이를 수행 할 수있는 방법을 찾을 수 없습니다.
아이디어가 있으십니까?
편집 : 내가 수행 한 첫 번째 작업은 스트림에 실제로 원본 이미지가 포함되어 있는지 확인하는 것입니다. 나는 다른 응용 프로그램 (iPhone/Windows MFC) &을 사용하여이 응용 프로그램을 읽고 이미지를 올바르게 표시 할 수 있습니다. Java/Android에서이 작업을 수행하는 방법을 찾아야합니다.
@ Seva Alekseyev : 대답 주셔서 감사합니다. 나는 당신의 제안을 시도했다. 런타임 예외를 받고있다. logcat "버퍼에 대한 픽셀만큼 큰". 나는 너비를 사용하여 비트 맵을 만들고 있어요. 이미지의 높이 & 높이 – OceanBlue
@OceanBlue : 비트 버퍼가 4 * 너비 * 높이 바이트보다 작음을 나타내는 메시지입니다. 있는지 확인하십시오 .ARGB_888은 픽셀 당 4 바이트입니다. –
@Seva Alekseyev : 알아요. 비트 버퍼가 너비 * 높이 바이트 길이인지 확인하십시오. 이미지는 픽셀 형식 당 1 바이트입니다. 따라서 크기가 4 배인 바이트 배열을 만들더라도 이미지는 첫 번째 1/4 부분에 저장됩니다. 안드로이드에서 "픽셀 당 1 바이트"형식을 알고 있습니까? – OceanBlue