2014-01-20 6 views
1

Я пытаюсь сохранить изображение, снятое с камеры в телефоне. Он работает, но качество изображений очень плохое. Во-первых, для намерения, это мой код:Очень плохое качество изображения камеры

intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent, CAMERA_REQUEST); 

И результат ativity, я попытался это:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == CAMERA_PICTURE) 
    { 
     if (resultCode == RESULT_OK) 
     { 
      bitmap = (Bitmap) data.getExtras().get("data"); 
      String path = Images.Media.insertImage(getContentResolver(), bitmap, "", null); 
     Uri imageUri = Uri.parse(path); 
     } 

Можете ли вы помочь мне решить эту проблему?

+1

«Я пытаюсь сохранить изображение, снятое с камеры в телефоне» - почему вы не используете 'EXTRA_OUTPUT' и не используете ли приложение для камеры изображение для вас? – CommonsWare

+0

Почему вы масштабируете изображение? –

+0

@CommonsWare: Как я могу это сделать? –

ответ

0

Если вы хотите, чтобы изображение находилось на диске, пусть приложение камеры сделает это. Добавьте EXTRA_OUTPUTUri в ваш Intent, указав, где вы хотите сохранить изображение.

package com.commonsware.android.camcon; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.provider.MediaStore; 
import java.io.File; 

public class CameraContentDemoActivity extends Activity { 
    private static final int CONTENT_REQUEST=1337; 
    private File output=null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File dir= 
     Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 

    output=new File(dir, "CameraContentDemo.jpeg"); 
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output)); 

    startActivityForResult(i, CONTENT_REQUEST); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
            Intent data) { 
    if (requestCode == CONTENT_REQUEST) { 
     if (resultCode == RESULT_OK) { 
     Intent i=new Intent(Intent.ACTION_VIEW); 

     i.setDataAndType(Uri.fromFile(output), "image/jpeg"); 
     startActivity(i); 
     finish(); 
     } 
    } 
    } 
} 

(от this sample project)

В Uri потребности, чтобы указать на место, где камера приложение может записывать, например, внешнее запоминающее устройство.

+0

Благодарим вас за ответ –

+1

Почему постоянная CONTENT_REQUEST установлена ​​на 1337? Это просто случайное число? –

+1

@TashPemhiwa: Это должно быть целое число. Вы можете выбрать другое целое число, которое вам подходит. * Если * ваша деятельность вызывает 'startActivityForResult()' в нескольких местах для нескольких разных запросов, вам понадобятся отдельные целые числа кода запроса для каждого, поэтому ваш 'onActivityResult()' может рассказать им обособленно. – CommonsWare

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