Захваченное изображение растягивается неправильно после обрезки в Android - PullRequest
1 голос
/ 23 декабря 2011

Я хочу захватить изображение с моей камеры и обрезать захваченное изображение с указанными координатами , а затем нарисовать его в середине другого изображения.Следующий код не дает сбоя, но захваченное изображение испортилось, , поскольку изображение растягивается неправильно.

Куда я иду?!

 //Get the bottom image Bitmap  

Bitmap bottomImage = BitmapFactory.decodeResource(getResources(), SelectDollarActivity.selectedImageId);

//Get the  captured image Bitmap   

Bitmap capturedImage  = BitmapFactory.decodeFile(CaptureImage.cImagePath) ; 

//************ CROP THE CAPTURED IMAGE *******************   


int targetBitmapWidth = bottomImage.getWidth();    
int targetBitmapHeight = bottomImage.getHeight() ;       

//create a Bitmap with specified width & height

Bitmap clippedBitmap = Bitmap.createBitmap(targetBitmapWidth, targetBitmapHeight, Bitmap.Config.ARGB_8888); 

//Construct a canvas with the specified bitmap to draw into.

Canvas canvas = new Canvas(clippedBitmap);   

//**************  cropping process goes HERE......... 

//Create a new rectangle with the specified coordinates  

RectF rectf = new RectF(left, top, right, bottom);

//Create an empty path 

Path path = new Path();  

//Add a closed oval contour to the path  

path.addOval(rectf, Path.Direction.CW);   

//Intersect the current clip with the specified path  : CROPPING 

canvas.clipPath(path); 

canvas.drawBitmap(capturedImage, null, new Rect(0, 0, targetBitmapWidth, targetBitmapHeight), null);

   //******** MERGING PROCESS *******************           

//Construct a canvas with the specified bitmap to draw into.  

Canvas combo = new Canvas(bottomImage);   

// Then draw the second on top of that 

combo.drawBitmap(clippedBitmap, 0f, 0f, null);  

 // bottomImage is now a composite of the two. so, display the bottom image     


//************** DISPLAY THE MERGED IMAGE ****************   

((ImageView)findViewById(R.id.billImage)).setImageBitmap(bottomImage);

1 Ответ

0 голосов
/ 23 декабря 2011

Документация гласит, что drawBitmap принимает еще два аргумента, ширину и высоту. В вашем коде

combo.drawBitmap(clippedBitmap, 0f, 0f, null);  

имеет только позиционирование.

Конечно, вам нужно будет задать еще несколько аргументов, но это должно сработать: D

...