OxOIII 2014-05-24 02:17 采纳率: 66.7%
浏览 1191

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();
}

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

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 mmocr的训练错误,结果全为0
    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀