0
餘米服用的Android屏幕截圖,並使用canvas.drawBitmap拍攝的圖像(水印)上繪製另一個圖像,canvas.drawBitmap給出了兩種不同的結果
這一切給予正確的結果,當我複製的水印(另一個圖像 - 說SD卡上visit.jpg)圖像,所拍攝的圖像具有寬度塗鴉外連語法,其中visit.jpg有寬度 - 339pixels,
File file = new File(Environment.getExternalStorageDirectory() + "/visit.jpg");
Bitmap myBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
,但我不希望水印圖像複製到SD卡,我想來自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