2 oxoiii OxOIII 于 2014.05.24 10:17 提问

android 图片裁剪问题

public void onClick(View v) {
switch (v.getId()) {
case R.id.selectImage:
/***
* 这个是调用android内置的intent,来过滤图片文件 ,同时也可以过滤其他的

*/

        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        //回调图片类使用的
        startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
        startActivityForResult(intent, RESULT_CANCELED);
        break;
    case R.id.uploadImage:
        if(picPath!=null&&picPath.length()>0)
        {
            InformationHelper inforHelper = (InformationHelper)(getApplicationContext());

            Log.w("picPath is :", picPath);

            HashMap<String, String> itemInformationMap = new HashMap<String, String>();
            itemInformationMap.put("Title", inforHelper.GetTitle());
            itemInformationMap.put("Price", inforHelper.GetPrice());
            itemInformationMap.put("Description", inforHelper.GetDescription());
            itemInformationMap.put("Category", inforHelper.GetCategory());
            itemInformationMap.put("UserId", String.valueOf(inforHelper.GetUserId()));


            itemInformationMap.put("picPath", picPath);
            UploadFileTask uploadFileTask=new UploadFileTask(this);
            uploadFileTask.execute(itemInformationMap);
            Intent intentUpload = new Intent();
            intentUpload.setClass(AndroidUploadFilesActivity.this, AllActivity.class);
            startActivity(intentUpload);
        }
        break;
    default:
        break;
    }
}

/**
 * 回调执行的方法
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {


    case PHOTO_REQUEST_GALLERY:
        if (data != null) {
            startPhotoZoom(data.getData(), 150);
        }
        break;

    case PHOTO_REQUEST_CUT:

         if(resultCode==Activity.RESULT_OK)
    {
        /**
         * 当选择的图片不为空的话,在获取到图片的途径  
         */
        Uri uri = data.getData();
        Log.e(TAG, "uri = "+ uri);
        try {
            String[] pojo = {MediaStore.Images.Media.DATA};

            Cursor cursor = managedQuery(uri, pojo, null, null,null);
            if(cursor!=null)
            {
                ContentResolver cr = this.getContentResolver();
                int colunm_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                String path = cursor.getString(colunm_index);
                /***
                 * 这里加这样一个判断主要是为了第三方的软件选择,比如:使用第三方的文件管理器的话,你选择的文件就不一定是图片了,这样的话,我们判断文件的后缀名
                 * 如果是图片格式的话,那么才可以   
                 */
                if(path.endsWith("jpg")||path.endsWith("png"))
                {
                    picPath = path;
                    Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
                    imageView.setImageBitmap(bitmap);
                }else{
                    alert();
                }
            }else{
                alert();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 回调使用
     */
    super.onActivityResult(requestCode, resultCode, data);
}
}

private void startPhotoZoom(Uri uri, int size) {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, "image/*");
    // crop为true是设置在开启的intent中设置显示的view可以剪裁
    intent.putExtra("crop", "true");

    // aspectX aspectY 是宽高的比例
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);

    // outputX,outputY 是剪裁图片的宽高
    intent.putExtra("outputX", size);
    intent.putExtra("outputY", size);
    intent.putExtra("return-data", true);

    startActivityForResult(intent, PHOTO_REQUEST_CUT);
}


private void alert()
{
    Dialog dialog = new AlertDialog.Builder(this)
    .setTitle("提示")
    .setMessage("您选择的不是有效的图片")
    .setPositiveButton("确定",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,
                        int which) {
                    picPath = null;
                }
            })
    .create();
    dialog.show();
}

为什么图片不能显示出来???逻辑哪里有问题?求大牛指导!!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!