2012-10-12 16 views
6

muszę przyciąć bitmapę image.For to używamBitmap.createBitmap (źródło bitmapy, int x, int y, int width, int height) zwracają źle bitmapy

Bitmap bitmap = Bitmap.createBitmap(imgView.getWidth(),imgView.getHeight(), Bitmap.Config.RGB_565); 
Bitmap result =Bitmap.createBitmap(bitmap,imgView.getLeft()+10, imgView.getTop()+50, imgView.getWidth()-20, imgView.getHeight()-100); 
bitmap.recycle(); 
Canvas canvas = new Canvas(result); 
imgView.draw(canvas); 

Ale przecina dna i po prawej stronie bitmapy. Górna i lewa część mapy bitowej istnieje w wyniku. Oznacza to, że pozycja x i y nie ma żadnego efektu.

Jestem szukał dobrej dokumentacji. Ale nie mogłem.

Dzięki z góry

Co tu jest problem i jak go rozwiązać?

Odpowiedz

10

Zasadniczo twój problem powstaje z faktu, że tworzysz bitmapę. Nic w nim nie wkładasz. Następnie tworzysz mniejszą bitmapę, a następnie renderujesz obraz do mniejszej bitmapy.

Powoduje odcięcie dolnej części 100 pikseli i prawej 20 pikseli.

Musisz utworzyć dużą bitmapę. Dodaj dane obrazu do tej bitmapy. Następnie zmień rozmiar.

Poniższy kod powinien działać:

Bitmap bitmap = Bitmap.createBitmap(imgView.getWidth(),imgView.getHeight(), Bitmap.Config.RGB_565); 
Canvas canvas = new Canvas(bitmap); 
imgView.draw(canvas); 
Bitmap result =Bitmap.createBitmap(bitmap,imgView.getLeft()+10, imgView.getTop()+50, imgView.getWidth()-20, imgView.getHeight()-100); 
bitmap.recycle(); 
+0

Dziękuję you.It działa dobrze. –

+0

dzięki szefowi. działa dobrze. – basheer