public class MainActivity extends Activity { ImageView immagine; Button button; Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); immagine=(ImageView)findViewById(R.id.imageView1); button=(Button)findViewById(R.id.button1); intent=new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setData(Uri.parse("content://media/external/images/media")); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivityForResult(intent,0); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ if(resultCode==RESULT_OK){ asyncTask async=new asyncTask(immagine); async.execute(getPathFromUri(data.getData())); } } private String getPathFromUri(Uri uri){ Cursor crs=getContentResolver().query(uri, null, null, null, null); crs.moveToFirst(); int indice=crs.getColumnIndex(MediaStore.Images.ImageColumns.DATA); String s=crs.getString(indice); crs.close(); return s; } class asyncTask extends AsyncTask<String,Void,Bitmap>{ WeakReference<ImageView> reference; public asyncTask(ImageView img){ reference=new WeakReference<ImageView>(img); } @Override protected Bitmap doInBackground(String... params) { BitmapFactory.Options opzioni=new BitmapFactory.Options(); opzioni.inJustDecodeBounds=true; BitmapFactory.decodeFile(params[0],opzioni); int fattore=1; while(opzioni.outWidth/fattore>20 && opzioni.outWidth/fattore>20){ fattore*=2; } opzioni.inJustDecodeBounds=false; opzioni.inSampleSize=fattore; Bitmap bmp=BitmapFactory.decodeFile(params[0],opzioni); return bmp; } @Override protected void onPostExecute(Bitmap bmp){ if(bmp!=null && reference!=null){ ImageView immagine=(ImageView)reference.get(); if(immagine!=null){ immagine.setImageBitmap(bmp); } } } }Funziona, funziona...
Miei appunti liberi, senza pretesa di dire necessariamente sempre cose giuste o sensate, durante l'apprendimento e la pratica della programmazione
JavascriptProva
domenica 10 gennaio 2016
Esercizio sull'elaborazione di un'immagine mediante AsyncTask.
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento