2016-05-11 12 views
0

Ich verwende den folgenden Beispielcode https://github.com/mklimek/android-crop/tree/newfeature_fied_size_crop. Es gibt die Ansicht zum Beschneiden mit fester Größe (d. H. HighlightView). Aber das Problem ist, dass highlightView fest ist, hängt von hochgeladenem Bild ab. Unten sind die Screenshots mit zwei verschiedenen hochgeladenen Bildern.Wie man die Höhe der hervorgehobenen Ansicht des Ausschnitts korrigiert, anstatt das hochgeladene Bild zu ändern?

I unter Codezeilen verwendet, um die Größe des HighlightView zu beheben:

private void beginCrop(Uri source) { 
    Uri outputUri = Uri.fromFile(new File(getCacheDir(), "cropped")); 
    new Crop(source).output(outputUri).asRectangle().withFixedSize(100, 210).start(this); 
} 

withFixedSize() -Methode verwendet, um die Größe des beschnittenen Bereichs zu beheben, wir diese Ansicht nicht die Größe verändern können, wenn wir diese Methode verwenden , das ist gut. Aber dieser beschnittene Bereich sollte mit Breite = 100, Höhe = 210 festgelegt werden, es sollte nicht abhängig vom hochgeladenen Bild sein.

Big Größe hochgeladen Bild hat eine geringe Größe der Ernte Ansicht (dh HighlightView):

enter image description here

Kleine Größe hochgeladen Bild hat eine Größe von Ernte Ansicht (dh HighlightView):

Meine Anforderung ist, dass ich die Größe des zugeschnittenen Bereichs fixieren muss, ich sollte das nicht ändern. Ich habe in Google World gesucht. Aber ich habe keine Lösung gefunden.

Bitte helfen Sie mir dabei.

+0

siehe meine answe unten. –

Antwort

0

Besuch dieses: https://github.com/jdamcd/android-crop

Crop

Crop.of(inputUri, outputUri).asSquare().start(activity) 

für das Ergebnis der Ernte Hören (Beispielprojekt sehen, wenn Sie einige Fehlerbehandlung tun wollen):

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent result) { 
    if (requestCode == Crop.REQUEST_CROP && resultCode == RESULT_OK) { 
     doSomethingWithCroppedImage(outputUri); 
    } 
} 

Einige Attribute werden bereitgestellt, um den Ernteschirm anzupassen. Siehe das Beispielprojektthema.

Pick-

Die Bibliothek ein Dienstprogramm Methode liefert ein Bild Picker zu starten:

Crop.pickImage(activity) 

Abhängigkeit

Die AAR auf Maven Zentrale veröffentlicht:

compile 'com.soundcloud.android:android-crop:[email protected]' 

Java-Code:

public class MainActivity extends Activity { 

    private ImageView resultView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     resultView = (ImageView) findViewById(R.id.result_image); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == R.id.action_select) { 
      resultView.setImageDrawable(null); 
      Crop.pickImage(this); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent result) { 
     if (requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK) { 
      beginCrop(result.getData()); 
     } else if (requestCode == Crop.REQUEST_CROP) { 
      handleCrop(resultCode, result); 
     } 
    } 

    private void beginCrop(Uri source) { 
     Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped")); 
     Crop.of(source, destination).asSquare().start(this); 
    } 

    private void handleCrop(int resultCode, Intent result) { 
     if (resultCode == RESULT_OK) { 
      resultView.setImageURI(Crop.getOutput(result)); 
     } else if (resultCode == Crop.RESULT_ERROR) { 
      Toast.makeText(this, Crop.getError(result).getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

Ausgang:

enter image description here

+0

Können Sie mir vorschlagen, wo ich die Logik ändern muss? –

+0

@SarithaG Ich aktualisiere mit dem Code siehe. –

+0

Ich habe das Gleiche gemacht. Die Größe der zugeschnittenen Ansicht hängt jedoch vom hochgeladenen Bild ab. Bitte überprüfen Sie den Code, indem Sie diese Anwendung installieren. –