2012-11-20 4 views
7

Ich benutze Aviary, um Bild in meiner Android-Anwendung zu bearbeiten, aber ich fand das zurückgehende Bild ist kleiner als das Original.Die Größe des Bildes, das von Aviary zurückgegeben wird, ist kleiner als das Original

Zum Beispiel habe ich ein großes Bild 2560x1920 zu Voliere, aber das zurückkehrende Bild ist 480x640.

Dies ist mein Code:

private void startFeather(Intent data) { 
    File file = getBitmapFromResult(data); 

    BitmapInfo bitmap = Helper.getBitmap(file, App.screenWidth, 0); 
    toastLong("raw photo: " + bitmap.getWidth() + "x" + bitmap.getHeight()); 

    Uri uri = Uri.fromFile(file); 

    this.featherOutputFile = new File(App.Path.tempDir(), "111" + ".jpg"); 

    // Create the intent needed to start feather 
    Intent newIntent = new Intent(self, FeatherActivity.class); 

    // set the source image uri 
    newIntent.setData(uri); 

    // pass the required api key (http://developers.aviary.com/) 
    String API_KEY = "aaabbbccc"; 

    newIntent.putExtra("API_KEY", API_KEY); 

    // pass the uri of the destination image file (optional) 
    // This will be the same uri you will receive in the onActivityResult 
    newIntent.putExtra("output", Uri.parse("file://" + featherOutputFile.getAbsolutePath())); 

    // format of the destination image (optional) 
    newIntent.putExtra("output-format", Bitmap.CompressFormat.JPEG.name()); 

    // output format quality (optional) 
    newIntent.putExtra("output-quality", 100); 

    // you can force feather to display only a certain tools 
    // newIntent.putExtra("tools-list", new String[]{"ADJUST", "BRIGHTNESS" }); 

    // enable fast rendering preview 
    newIntent.putExtra("effect-enable-fast-preview", true); 

    // limit the image size 
    // You can pass the current display size as max image size because after 
    // the execution of Aviary you can save the HI-RES image so you don't need a big 
    // image for the preview 
    newIntent.putExtra("max-image-size", App.screenWidth); 
    newIntent.putExtra("effect-enable-external-pack", false); 
    newIntent.putExtra("stickers-enable-external-pack", false); 
    newIntent.putExtra("effect-enable-borders", false); 

    // HI-RES 
    // You need to generate a new session id key to pass to Aviary feather 
    // this is the key used to operate with the hi-res image (and must be unique for every new instance of Feather) 
    // The session-id key must be 64 char length 
    String mSessionId = StringUtils.getSha256(System.currentTimeMillis() + API_KEY); 
    newIntent.putExtra("output-hires-session-id", mSessionId); 

    // you want to hide the exit alert dialog shown when back is pressed 
    // without saving image first 
    // newIntent.putExtra("hide-exit-unsave-confirmation", true); 

    // ..and start feather 
    startActivityForResult(newIntent, INTENT_FEATHER); 
} 

Habe ich etwas verpasst?

+0

erwähnt Haben Sie die Hi-Res-Ausgabe verwendet? Ansonsten wird nur die kleinere Vorschau zurückgegeben, deren Größe vom Speicher des Gerätes abhängt. –

+0

Kann ich Ihnen helfen? Aber Sie müssen andere lib verwenden. –

+0

@Freewind Entschuldigung dafür, wie ich frage, weil diese Frage auch nach zwei Jahren keine Antwort bekommen hat ... Hast du irgendeine Lösung bekommen ... Ich stehe jetzt vor dem gleichen Problem – Praveen

Antwort

1

Endlich die Lösung. Es wird in Aviary android Beispiel-App

final DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     int max_size = Math.max(metrics.widthPixels, metrics.heightPixels); 
     max_size = (int) ((float) max_size/1.2f); 
     newIntent.putExtra(Constants.EXTRA_MAX_IMAGE_SIZE, max_size); 
Verwandte Themen