0
I 안드로이드 화면의 스크린 샷을 취하고 canvas.drawBitmap을 이용하여 촬영 화상 (워터 마크)에 다른 이미지를 그릴있어
모두 나 워터 마크를 복사 할 때 적절한 결과를 제공하는 (다른 이미지를 제공 - SD 카드에 visit.jpg) 이미지를 말한다 캡처 된 이미지가
File file = new File(Environment.getExternalStorageDirectory() + "/visit.jpg");
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
, visit.jpg는 폭 - 339pixels이 폭 500pixel을 가지고하지만 난 SDCARD에 워터 마크 이미지를 복사 할 해달라고, 내가 원하는 res 폴더의 이미지는 캡처 한 이미지에 그려야하므로 사용했습니다
Bitmap visit = BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.visit);
캔버스에 그려서 저장하면 저장되지만 워터 마크 이미지 (visit.jpg)는 늘어나고 크기는 339 픽셀보다 커집니다. 왜 ?
내 코드는 다음과 같습니다
View v1 = findViewById(android.R.id.content).getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap screenshot = Bitmap.createBitmap(v1.getDrawingCache());
Bitmap cropimg = Bitmap.createBitmap(screenshot, 50, 0, screenshot.getWidth()-100, 592);
v1.setDrawingCacheEnabled(false);
Bitmap Rbitmap = Bitmap.createBitmap(cropimg).copy(Config.ARGB_8888, true);
Bitmap visit = BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.visit); // image accessed from drawable
Canvas canvas = new Canvas(Rbitmap);
File file = new File(Environment.getExternalStorageDirectory() + "/visit.jpg"); // the image copied on sd card
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
canvas.drawBitmap(visit, 0, 570, null); // if i put myBitmap instead of visit i.e. canvas.drawBitmap(myBitmap, 0, 570, null); then visit.jpg image gets draw properly with 339pixel width without strtch
canvas.save();
을하지만 당신은''BitmapFactory.decodeResource (..., BitmapFactory를 사용하여 시도 할 수 있습니다 : 당신은 같은 오픈 후/입술/원시/폴더에 이미지를 넣을 수 있습니다. 옵션)''Options.inScaled''가 false로 설정되었는지 확인하십시오. – harism
아니, 그건 작동하지 않았다. – SML
'visit.getWidth()'와'visit.getHeight()'을 사용해 비트 맵이 늘어 났는지 또는 나중에 발생하는지 확인하십시오. – Jave