Autore Topic: Problema cropping maggiore di 256 px  (Letto 505 volte)

Offline ale88sv

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +1
    • Google+
    • Mostra profilo
    • Le Mie Apps
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ale88sv
  • Sistema operativo:
    Windows 7 / Ubuntu 12.4
Problema cropping maggiore di 256 px
« il: 05 Febbraio 2013, 16:52:58 CET »
0
Ciao a tutti, devo trovare il modo di croppare un immagine presa o dalla galleria o dalla fotocamera.

Vi posto il codice (preso da un tutorial)
Codice (Java): [Seleziona]
 private void doCrop() {
                final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();
       
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setType("image/*");
       
        List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 );
       
        int size = list.size();
       
        if (size == 0) {               
                Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show();
               
            return;
        } else {
                intent.setData(mImageCaptureUri);
            //intent.setDataAndType(mImageCaptureUri, "image/*");
            intent.putExtra("outputX", 256);
            intent.putExtra("outputY", 256);
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            //intent.putExtra("scale", false);
            intent.putExtra("crop", "true");
            //intent.putExtra(MediaStore.EXTRA_OUTPUT,MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
            intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

            intent.putExtra("return-data", true);
           
                if (size == 1) {
                        Intent i                = new Intent(intent);
                        ResolveInfo res = list.get(0);

                        i.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
                        Log.v("crop","size == 1");
                          intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

                            try {
                                intent.putExtra("return-data", true);
                                startActivityForResult(i, CROP_FROM_CAMERA);
                            } catch (ActivityNotFoundException e) {
                                Log.v("crop", "CATCH_:"+e);
                            }
                       
                } else {
                        Log.v("crop","size > 1");
                        for (ResolveInfo res : list) {
                                final CropOption co = new CropOption();

                                co.title        = getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo);
                                co.icon         = getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo);
                                co.appIntent= new Intent(intent);

                                co.appIntent.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name));

                            cropOptions.add(co);
                        }

                        CropOptionAdapter adapter = new CropOptionAdapter(getApplicationContext(), cropOptions);

                        AlertDialog.Builder builder = new AlertDialog.Builder(this);
                        builder.setTitle("Choose Crop App");
                        builder.setAdapter( adapter, new DialogInterface.OnClickListener() {
                            public void onClick( DialogInterface dialog, int item ) {
                                startActivityForResult( cropOptions.get(item).appIntent, CROP_FROM_CAMERA);
                            }
                        });

                        builder.setOnCancelListener( new DialogInterface.OnCancelListener() {
                           
                            public void onCancel( DialogInterface dialog ) {

                                if (mImageCaptureUri != null ) {
                                    getContentResolver().delete(mImageCaptureUri, null, null );
                                    mImageCaptureUri = null;
                                }
                            }
                        } );

                        AlertDialog alert = builder.create();

                        alert.show();
                }
        }
        }

Ho impostato un bottone che mi chiama l'alert
Codice (Java): [Seleziona]
        /* add photo */
        public void top_btn_dx(View v) {
               
                /*show camera choise*/
                final AlertDialog dialog = builder.create();
                dialog.show();

       

        }

Funzionare funziona, ma se aumento il cropping maggiore di 256 rimane in loop quando clicco su salva nell'immagine croppata, mi scrive "salvataggio in corso" e non fa nulla.
Ho trovato solo questo articolo http://stackoverflow.com/questions/7237479/android-cropper-cannot-go-beyond-256.

Qualcuno conosce qualche walkaround ??