アーカイブ

2011 年 6 月 のアーカイブ

Androidで画像を選択し、画像を切り抜く(クロップ)するサンプル

2011 年 6 月 20 日 コメントはありません

layoutはボタン置いてあるだけなので省略。
ボタンクリック>ギャラリーから画像選択>クロップ>なんかするhogehoge。
クロップ後のサイズ(outputX、outputY)が大きすぎるとエラーでて利用できない。
壁紙サイズは無理。

package com.example.crop;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

    final private int REQUEST_CODE_GALLERY = 10;
    final private int REQUEST_CODE_CROP = 11;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button button_background = (Button)findViewById(R.id.button_background);
        button_background.setOnClickListener(this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
            case REQUEST_CODE_GALLERY:
                Intent intent = new Intent("com.android.camera.action.CROP");
                intent.setData(data.getData());
                intent.putExtra("outputX", 48);
                intent.putExtra("outputY", 48);
                intent.putExtra("aspectX", 1);
                intent.putExtra("aspectY", 1);
                intent.putExtra("scale", true);
                intent.putExtra("return-data", true);
                startActivityForResult(intent, REQUEST_CODE_CROP);
                break;
            case REQUEST_CODE_CROP:
                Bundle ext = data.getExtras();
                if (ext != null) {
                    Bitmap bitmap = ext.getParcelable("data");
                    // hogehoge
                }
                break;
            }
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button_background:
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, REQUEST_CODE_GALLERY);
            break;
        }
    }
}
カテゴリー: android タグ: