2

私はこれをネットで検索してきましたが、助けを見つけることができませんでした。

カメラを呼び出して画像をキャプチャし、トリミングしたい。しかし、問題は、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インテントのみで画像を円形にトリミングしたい。

4

3 に答える 3

0

私はまだこれを試していませんが、うまくいくはずです...

カメラから画像を取得できると仮定します。そのイメージができたら、次のように進めることができます。

Canvas新しいビットマップに描画する を取得します。Pathオブジェクトを作成して呼び出しますaddCircle。あなたの回覧を渡して電話clipPathしてください。次に、カメラ イメージを に描画します。クリッピング エリア内にのみ描画する必要があります。のロックを解除し、新しい を使用して、必要な種類の画像を保存します。必要に応じてリソースを処分します。CanvasPathCanvasCanvasBitmap

于 2013-10-27T10:14:43.543 に答える