0

私はプロジェクトを持っています。カメラデバイスを使用して写真を撮り、ギャラリーを開いて写真を撮りたいのですが、両方とも私のプロジェクトのイメージビューに表示できます。次に、imageviewで処理、回転できるこの画像が必要です。回転するコードがありますが、画像のためだけに行われたそのコードは描画可能なフォルダーに保存されました。助けて、私を救ってください。XMLの任意のイメージビュー(画像を表示するため)、3つのボタン:「写真を撮る」、「ギャラリーを開く」、「回転」。ギャラリーとカメラから画像ビューに表示されている画像をどのように回転できますか?

4

2 に答える 2

1

画像を回転させるためのコードは正しいです。しかし、なぜ画像を半分にスケ​​ーリングしているのかわかりません。

matrix.postScale(0.5f, 0.5f)削除して変更する方が良いでしょう

int newWidth = bMap.getWidth()/2;
int newHeight = bMap.getHeight()/2;

int newWidth = bMap.getHeight();
int newHeight = bMap.getWidth();
于 2013-09-11T16:07:05.993 に答える
0

これは私のコードです:

public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private static final int TAKE_PICTURE = 0;
private Uri mUri;
private Bitmap mPhoto;
private static int RESULT_LOAD_IMAGE = 1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    View tombolCamera = findViewById(R.id.btnCamera);
    tombolCamera.setOnClickListener(this);
    View tombolGallery = findViewById(R.id.btnGallery);
    tombolGallery.setOnClickListener(this);
    View tombolRotate = findViewById(R.id.btnRotate);
    tombolRotate.setOnClickListener(this);
}

public void onClick(View v) {
    switch (v.getId()) {

case R.id.btnCamera:
    Intent c = new Intent("android.media.action.IMAGE_CAPTURE");
    File f = new File(Environment.getExternalStorageDirectory(),  "photo.jpg");
    c.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
    mUri = Uri.fromFile(f);
    startActivityForResult(c, TAKE_PICTURE);
break;

case R.id.btnGallery:
    Intent g = new Intent(
    Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(g, RESULT_LOAD_IMAGE);
break;

case R.id.btnRotate:
    ImageView imageView = (ImageView) findViewById(R.id.imgView);
    Bitmap bMap = Bitmap.createBitmap(imageView.getDrawingCache());
    Matrix matrix = new Matrix();
    matrix.postRotate(90);
    matrix.postScale(0.5f, 0.5f);

    int newWidth = bMap.getWidth()/2;
    int newHeight = bMap.getHeight()/2;

    Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, newWidth, newHeight, matrix, true);
    imageView.setImageBitmap(bMapRotate);

break;
    }
}

public void onActivityResult1(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case TAKE_PICTURE:
        if (resultCode == Activity.RESULT_OK) {
            getContentResolver().notifyChange(mUri, null);
            ContentResolver cr = getContentResolver();
            try {
                mPhoto = android.provider.MediaStore.Images.Media.getBitmap(cr, mUri);
                ((ImageView)findViewById(R.id.imgView)).setImageBitmap(mPhoto);
            } catch (Exception e) {
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);

if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
    Uri selectedImage = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    Cursor cursor = getContentResolver().query(selectedImage,
            filePathColumn, null, null, null);
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String picturePath = cursor.getString(columnIndex);
    cursor.close();

    ImageView imageView = (ImageView) findViewById(R.id.imgView);
    imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

}

} }

これは、イメージビューで画像を表示するための作業ボタン「ギャラリー」です。しかし、「回転」をクリックすると、画像がフリーズします。私のコードを修正してください....

于 2013-09-11T08:37:18.297 に答える