私はこれをネットで検索してきましたが、助けを見つけることができませんでした。
カメラを呼び出して画像をキャプチャし、トリミングしたい。しかし、問題は、RECTANGULAR トリミング (画像で指定) ツールの代わりに、CIRCULAR 1 (2 番目の画像) が必要です。
注: 最初の画像が表示されます - 長方形の領域をトリミングし、他の関数を使用して円形に表示します。
画像 2 が表示されている間 - 画像を円形にトリミングします。
ネットで見つけたのは、この長方形ツールを使用してトリミングし、画像を円形ビューで表示することだけでした。(ただし、円形にトリミングしたい)
私が onActivityResult 関数でやっていることは -
case CROP_FROM_CAMERA:
Bundle extras = data.getExtras();
if (extras != null)
{
Bitmap photo = extras.getParcelable("data");
//this method convert the rectangular cropped image to circular display.
GraphicsUtil gu= new GraphicsUtil();
Bitmap output = gu.getCircleBitmap(photo,16);
mImageView.setImageBitmap(output);
}
File f = new File(mImageCaptureUri.getPath());
if (f.exists()) f.delete();
break;
GraphicsUtil 関数のコードは次のとおりです -
public Bitmap getCircleBitmap(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xffff0000;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
paint.setDither(true);
paint.setFilterBitmap(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth((float) 4);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
ご覧のとおりです。画像は長方形にトリミングされ、円形に表示される関数に渡されます。
GraphicUtil関数を使用せずに、CROP_FROM_CAMERAインテントのみで画像を円形にトリミングしたい。