안드로이드 개발 질문/답변
(글 수 45,052)
ksoap2를 통해 string을 받아옵니다.
이 string 을 byte[]로 변환하고
--
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
byte[]를 위와 같이 bitmap으로 변환했습니다.
문제는 바로 이미지 뷰로 띄우려고 했는데 띄어지지가 않네요....
img.setImageBitmap(bmp);
img는 ImageView입니다.
안뜹니다....
그래서 sd카드에 저장후 불러오려고 했는데..
아래 코드를 보면...
private void GetImg() {
try {
// 웹서비스를 통해 이미지의 byte[]를 불러오는 부분
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("m_title", m_title);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE aht = new HttpTransportSE(URL);
aht.call(SOAP_ACTION, envelope);
// resultstring을 string에서 변환 SoapPrimitive resultString = (SoapPrimitive) envelope.getResponse(); String bstr = resultString.toString(); // 다시 String형식으로 byte[]으로 변환 byte[] b = bstr.getBytes();
// byte[]을 비트맵으로 변환 bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
// 파일 입력 부분... String path = "/mnt/sdcard/" + m_title + ".jpg"; File file = new File(path); FileOutputStream fos = new FileOutputStream(file);
// !!!!!!!!!!!!!!!!!!!!!!! bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush(); fos.close();
// 뜨지 않음 img.setImageBitmap(bmp);
Toast.makeText(ViewImage.this, "성공", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(ViewImage.this, "에러", Toast.LENGTH_SHORT).show();
}
}
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
이 함수가 문제입니다....
이 함수 없을때 까지는 파일이 잘만들어 지고 compress하면 catch로 넘어가 버립니다.
file.write(b)로 했지만 저장은 되고 비트맵의 이미지는 나오지 않습니다.
제발 도와주세요.....
아니면 바로 bitmap을 setImageBitmap으로 띄우는 방법좀 알려주세요.............




SOAP 에서는 byte 스트림을 전달하지 못하는 걸로 알고 있어요...
String으로 변환해서 전달하지 않으면 데이터가 손상된다고...
데이터가 손상되었기 때문에 compress에서 exception이 뜬거 같은데요?