0

ギャラリーとカメラからの写真を正方形にトリミングしようとしています。ギャラリーから完璧に機能し、ギャラリーが開き、写真を選択すると、サイズを変更してもクロップフレームは常に正方形の形を保ちます. しかし、カメラから撮った写真に対して同じことを行うと、コードで何を変更しても、トリミング フレームは長方形の形状を維持します。

aspectXこれはandで変更できると読みましたが、aspectYそれでも同じ結果が得られます。現在、私のコードは次のとおりです。

Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
            File f = new File(Environment.getExternalStorageDirectory(),  "photo.png");
            i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
            i.putExtra("crop", "true");
            i.putExtra("outputX", 320);
            i.putExtra("outputY", 320);
            i.putExtra("aspectX", 320);
            i.putExtra("aspectY", 320);
            i.putExtra("scale", true);      

            mUri = Uri.fromFile(f);
            startActivityForResult(i, CAMERA_PICTURE);

常に正方形の形状を維持するようにクロップフレームを構成する方法を持っているボディはありますか?...事前に感謝します!

4

2 に答える 2

0

この方法を試してください:

    Bitmap m_bitmap = BitmapFactory.decodeFile(m_Path);
     Intent m_cropIntent = new Intent("com.android.camera.action.CROP");
    // indicate image type and Uri
    m_cropIntent.setDataAndType(Uri.fromFile(new File(m_Path)), "image/*");
    // set crop properties
    m_cropIntent.putExtra("crop", "true");
    // indicate aspect of desired crop
    m_cropIntent.putExtra("aspectX", 1);
    m_cropIntent.putExtra("aspectY", 1);
    // indicate output X and Y
    m_cropIntent.putExtra("outputX", 256);
    m_cropIntent.putExtra("outputY", 256);
    // retrieve data on return
    m_cropIntent.putExtra("return-data", true);
    // start the activity - we handle returning in onActivityResult
    startActivityForResult(m_cropIntent, 1);
于 2013-01-24T09:30:50.663 に答える
0

あなたは本当にこの方法をやりたいですか?

ビットマップを作成し、キャンバスにドローアブルを追加して、ビットマップをドローアブルにしてビットマップを保存するキャンバスに描画します。

問題がある場合は、// ファイルからビットマップを作成することもできます //

BitmapDrawable returnedBitmap = BitmapDrawable(String filepath); // here you create image with size of image
Canvas canvas = new Canvas(returnedBitmap); // here you attach canvas to bitmap
drawable.draw(canvas); // here you tell to you drawable that you want to draw to this canvas drawable know canvas size and it automatically resize it self to fill canvas. Also you can read another image an use it.

また、resize 関数を呼び出して特定のサイズにすることもできます。

Drawable :)これは、外側の色を内側の透明にするという意味です

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <gradient android:startColor="#554C5466" android:centerColor="#55334255" android:endColor="#ff3D5A99" android:angle="270"/>
    <stroke android:width="1px" android:color="#ffffffff" />
    <corners android:radius="10dp"/>    
</shape>

ビットマップをファイルに保存します

于 2013-01-24T09:21:03.303 に答える