2

Я внедрил Camera by Intent и установил, что изображение в Imageview, которое выглядит размытым, в то же время отображается то же изображение в ImageGallery. Код и связанной с ними картина следующим образом:Проблема с размытым изображением в Imageview

Image saved in SD CARD

Blurred image in Imageview

Класс активности:

public class MainActivity extends ActionBarActivity { 
    Button b1,b2; 
    ImageView iv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     b1=(Button)findViewById(R.id.button); 
     iv=(ImageView)findViewById(R.id.imageView); 

     b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(intent, 0); 
     } 
     }); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

     Bitmap bp = (Bitmap) data.getExtras().get("data"); 
     iv.setImageBitmap(bp); 
    } 

Файл сохраняются в SDCard, а также я retrive его URI успешно, но по-прежнему ImageView не показывайте это изображение или изображение исчезает при нажатии и возврате камеры. Код:

public class MainActivity extends Activity { 

    static int TAKE_PIC =1; 
    Uri outPutfileUri; 
    ImageView mImageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mImageView = (ImageView) findViewById(R.id.image); 
    } 


    public void CameraClick(View v) { 

     Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     File file = new File(Environment.getExternalStorageDirectory(), 
       "MyPhoto.jpg"); 
     outPutfileUri = Uri.fromFile(file); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri); 
     startActivityForResult(intent, TAKE_PIC); 
    } 

    Bitmap bitmap = null; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode,Intent data) 
    { 
     if (requestCode == TAKE_PIC && resultCode==RESULT_OK) { 

      String uri = outPutfileUri.toString(); 
      Log.e("uri-:", uri); 
      mImageView.setImageURI(Uri.parse(uri)); 
     } 
}} 

Пожалуйста, предложите мне, как получить изображение с кликом и настроить его для просмотра изображений. Я здесь новичок.

ответ

3

Попробуйте это,

public class MainActivity extends Activity { 

    static int TAKE_PIC =1; 
    Uri outPutfileUri; 
    ImageView mImageView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mImageView = (ImageView) findViewById(R.id.image); 
    } 


    public void CameraClick(View v) { 

     Intent intent= new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     File file = new File(Environment.getExternalStorageDirectory(), 
       "MyPhoto.jpg"); 
     outPutfileUri = Uri.fromFile(file); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outPutfileUri); 
     startActivityForResult(intent, TAKE_PIC); 
    } 

    Bitmap bitmap = null; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode,Intent data) 
    { 
     if (requestCode == TAKE_PIC && resultCode==RESULT_OK) { 

      String uri = outPutfileUri.toString(); 
      Log.e("uri-:", uri); 
      Toast.makeText(this, outPutfileUri.toString(),Toast.LENGTH_LONG).show(); 

      //Bitmap myBitmap = BitmapFactory.decodeFile(uri); 
      // mImageView.setImageURI(Uri.parse(uri)); OR drawable make image strechable so try bleow also 

      try { 
       bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outPutfileUri); 
       Drawable d = new BitmapDrawable(getResources(), bitmap); 
       mImageView.setImageDrawable(d); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


     } 
} 

} 

Надеюсь, это поможет вам наслаждаться !!!!!

+0

Можете ли вы описать, в чем проблема? –

+0

Это действительно помогло. благодаря –

3

Прежде всего, изображение размыто, поскольку данные намерения содержат только уменьшенное изображение.

вы должны сохранить изображение во внутреннем/внешнем хранилище, а затем приобрести его.

не стесняйтесь взглянуть на андроид разработчиков документации относительно изображений камер:

Android Developers

и этот старый SO ответ объясняет, как получить полный размер после его сохранения:

Android get full size image from camera

+0

Если приложение аварийно завершает работу, скопируйте stackprace на свой вопрос, чтобы мы могли его увидеть. – CptEric

+0

вы пытаетесь получить uri из миниатюры данных, которые никогда не сработают. вы должны следовать инструкциям разработчиков Android, которые связаны с правильной сохранением в доступном каталоге, и, при получении результата, получить доступ к каталогу и получить его. – CptEric

+0

одна строка не сделает всю работу остальной части кода в этом, http://developer.android.com/intl/es/training/camera/photobasics.html, ранее связанном учебнике. вы должны сначала подготовить камеру, а после ее получения, декодировать ее. – CptEric

Смежные вопросы