마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 비트맵 이미지 테두리 안나오게 하는 방법

0 추천

 

안녕하세요 아래 소스코드와 같이 비트맵 이미지를 만들었는데 어떤 사진은 이미지 테두리가 없는데 올린 사진은

우측, 하단 검은색 라인이 있네요 . 어떤 사진은 정사각형으로 4방에 테두리가 있고요

테두리를 안나오게 할 수 있는 방법이 없을까요??

 Matrix scaleMatrix = new Matrix();
		            scaleMatrix.setScale(ratioX, ratioY, middleX, middleY);

		            Canvas canvas = new Canvas(scaledBitmap);
		            canvas.setMatrix(scaleMatrix);
		            canvas.drawBitmap(bmp, middleX - bmp.getWidth() / 2, middleY - bmp.getHeight() / 2, new Paint(Paint.FILTER_BITMAP_FLAG));

		            ByteArrayOutputStream stream = new ByteArrayOutputStream();
		            scaledBitmap.compress(Bitmap.CompressFormat.JPEG, 80, stream);
		            byte[] rdata  = stream.toByteArray();

 

익명사용자 님이 2015년 8월 28일 질문

1개의 답변

0 추천

테두리 라인이 나오는 것이 아무래도 scaledBitmap 이랑 bmp를 scale해서 그려지는 부분이랑 크기가 달라서 그런것이 아닐까요?

대충 봤을대 이미지를 리사이징 하는 부분 같은데요 만일 그기능만이시라면

Bitmap scaledBitmap = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(), bmp.getHeight(), scaleMatrix, new Paint(Paint.FILTER_BITMAP_FLAG));
 
하는 것은 어떠신지요?
컴러기 (22,230 포인트) 님이 2015년 8월 28일 답변
canvas.drawBitmap(bmp, middleX - bmp.getWidth() / 2, middleY - bmp.getHeight() / 2, new Paint(Paint.FILTER_BITMAP_FLAG));
==>> canvas.drawBitmap(bmp,0,0,bmp.getWidth(), bmp.getHeight(), new Paint(Paint.FILTER_BITMAP_FLAG));
이렇게 바꾸란 말씀이시지요??
아뇨
Canvas canvas = new Canvas(scaledBitmap);                    
canvas.setMatrix(scaleMatrix);                    
canvas.drawBitmap(bmp, middleX - bmp.getWidth() / 2, middleY - bmp.getHeight() / 2, new Paint(Paint.FILTER_BITMAP_FLAG));
이부분을
Bitmap scaledBitmap = Bitmap.createBitmap(bmp,0,0,bmp.getWidth(), bmp.getHeight(), scaleMatrix, new Paint(Paint.FILTER_BITMAP_FLAG));
이런식으로요
아예  scaledBitmap을 이미지를 리사이징해서 바로 만들어 보심이 어떨까해서요.
아무튼 지금 외각 테두리 효과가 나타나는 이유는 scaledbitmap의 크기와 새로 넣어질 이미지의 크기 (scalematrix적용후의 크기) 가 서로 일치 하지 않는 문제가 생겨서 그런것 같습니다.
다시 한번 해보겠습니다.^^ 답변 감사 드립니다.
...