2012-10-12 32 views
6

私はBitmap.createBitmap(ビットマップソース、int型のx、int型のy、int型の幅、int型の高さ)間違ったビットマップを返し

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); 

を使用しています。このimage.Forビットマップをトリミングする必要がある。しかし、それは下をカットビットマップの右と左の部分が出力に存在します。つまり、xとyの位置は効果がありません。

私は良いドキュメントを探しています。しかし、私はできませんでした。ここでの問題は何アドバンス

おかげで、どのように解決するには?

答えて

10

基本的に、問題は、ビットマップを作成するという形で発生します。あなたはそれに何も入れない。次に、より小さなビットマップを作成し、次にその小さいビットマップにimageViewをレンダリングします。

これは、下端100ピクセルと右端20ピクセルをカットします。

大きなビットマップを作成する必要があります。画像ビューデータをそのビットマップに追加します。次にサイズを変更します。

次のコードは動作するはずです:

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

をyou.Itが正常に動作しますありがとうございます。 –

+0

ありがとうございました。それは良い作品です。 – basheer

関連する問題