2016-08-30 6 views
-3

Vielen Dank für Ihre Wertschätzung im Voraus.In Android, wie man Bild ohne speichern Bilddatei

Ich bin in der nächsten Contidion Codierung.
a. use internal camera app(I use Intent and other app to take pickture).
b. get image without saving into file.

In meiner App, Benutzer pickture einer Kreditkarte nehmen und an den Server senden. Kreditkarten-Image-Datei ist nicht notwendig und das Speichern von Bildern in Dateien ist nicht gut für die Sicherheit.

Ist es möglich?

Wenn es unmöglich ist, gibt es noch etwas?

a. Öffnen der JPG-Datei, Bearbeiten aller Pixel in Schwarz
b. Verwenden Sie https://github.com/Morxander/ZeroFill

Whitch-Methode ist betreibbar?

+0

Sie können es in der temporären Datei speichern, wenn Sie mit dem Senden an den Server fertig sind löschen Sie es. –

+0

@SohailZahid danke für deine Hilfe !! Wie kann ich in einer temporären Datei speichern? –

+0

@Sohail Zahid danke für deine Hilfe !! Wie kann ich in einer temporären Datei speichern? –

Antwort

1

Kurze Antwort ist NO.
Sie können kein Foto von der Standard-Kamera-App erhalten, ohne es im Bild zu speichern.
Sie können die Kamera-API verwenden, um Fotos in Ihrer App zu erstellen, ohne die Standardsystem-Foto-App von Drittanbietern zu verwenden.

+0

danke! Ich weiß, dass ich Camera API verwenden oder Bilddatei wischen muss. –

1

Schauen Sie hier, um volle Source.

anfordern, diese Erlaubnis auf dem AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Auf Ihrem Activity, starten, indem Sie definieren diese:

static final int REQUEST_IMAGE_CAPTURE = 1; 
private Bitmap mImageBitmap; 
private String mCurrentPhotoPath; 
private ImageView mImageView; 

Dann dieses Intent Feuer in einem onClick:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
if (cameraIntent.resolveActivity(getPackageManager()) != null) { 
    // Create the File where the photo should go 
    File photoFile = null; 
    try { 
     photoFile = createImageFile(); 
    } catch (IOException ex) { 
     // Error occurred while creating the File 
     Log.i(TAG, "IOException"); 
    } 
    // Continue only if the File was successfully created 
    if (photoFile != null) { 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); 
     startActivityForResult(cameraIntent, REQUEST_IMAGE_CAPTURE); 
    } 
} 

Fügen Sie die folgende Supportmethode:

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, // prefix 
      ".jpg",   // suffix 
      storageDir  // directory 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
    return image; 
} 

Dann das Ergebnis erhalten:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     try { 
      mImageBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath)); 
      mImageView.setImageBitmap(mImageBitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Was machte es Arbeit ist die MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(mCurrentPhotoPath)), die aus dem Code von developer.android.com unterscheidet. Der ursprüngliche Code gab mir eine FileNotFoundException.

+0

Danke. Ich hab es geschafft!!. –

Verwandte Themen