웹에서 jpg 이미지를 다운로드하여 바이트 배열에 저장하려고 시도 할 때까지 RAM에 압축 된 이미지가 있어야합니다. 그것을 보여라. 그러나 나는 검은 그림을 얻고있다.RAM에서 바이트 배열로 저장하는 웹에서 jpg 이미지 다운로드
는 내가하고 있어요 것은 : 나는 그것을 사용하는 때까지 그 후
URL myFileUrl =null;
myFileUrl= new URL(fileUrl);
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
conn.setUseCaches(false);
InputStream is = conn.getInputStream();
byte[] ba = new byte[is.available()];
내가 RAM의 배열을 유지하고있다.
그것을 배치하려면 , 내가 할 :
Bitmap bitmapFromByteArray = BitmapFactory.decodeByteArray(ba,0,ba.length);
imageView1.setImageBitmap(bitmapFromByteArray);
bitmapFromByteArray.recycle();
난 후 JPEG 및 디코딩하고있어이 작업을 수행하여
URL myFileUrl =null;
myFileUrl= new URL(fileUrl);
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
int size = bm.getWidth() * bm.getHeight();
ByteArrayOutputStream out = new ByteArrayOutputStream(size);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
byte[] ba2 = out.toByteArray();
bm.recycle()
Buut를 수행하여 문제를 해결 이미지를 여러 번 다시 인코딩 그림의 품질을 낮추고 전화 리소스를 필요한 것보다 오래 사용하십시오. 또한 다시 인코딩 한 후에 얻는 비트 맵은 원본 jpg 이미지보다 큽니다.
첫 번째 방법을 사용할 수있는 방법이 있습니까?
감사합니다.
예, 멍청한 질문입니다. 문제는 바이트 배열을 초기화하는 방법을 모른다는 것입니다. 얼마나 오래 있어야 하죠? 어쩌면 아파치 공유지 (IOUtils) 예제가 있습니까? –
탱크 있습니다. 이전에 (비트 맵과 같은 이미지를 저장할 때) memoryOutOfBoundsException을 던지는 데 사용되는 응용 프로그램은 아니 었으며 jpg (또는 jpg 종류)로 저장하거나 품질을 유지할 수도 없었습니다. –
IOUtils를 찾을 수 없습니다. 패키지가 포함되어 있다고 말할 수 있습니까? Niether org.apache.commons에 io가 있습니다. 그래서 org.apache.commons.io.IOUtils에 액세스 할 수 없습니다. – Debopam