2012-11-20 9 views
7

Sto utilizzando Aviary per modificare l'immagine nella mia applicazione Android, ma ho trovato che l'immagine di ritorno è più piccola dell'originale.La dimensione dell'immagine restituita da Aviary è inferiore all'originale

Ad esempio, ho passato una grande immagine 2560x1920 in voliera, ma l'immagine di ritorno è 480x640.

Questo è il mio codice:

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); 
} 

mi manca qualcosa?

+0

Hai utilizzato l'output ad alta risoluzione? Altrimenti viene restituita solo l'anteprima più piccola, la cui dimensione dipende dalla memoria del dispositivo. –

+0

Posso aiutarti? Ma hai bisogno di usare altre lib. –

+0

@Freewind Ci scusiamo per questo, come sto chiedendo, perché questa domanda non ha ottenuto alcuna risposta anche dopo due anni .. Hai trovato qualche soluzione .. Sto affrontando lo stesso problema ora – Praveen

risposta

1

Finalmente trovato la soluzione. È menzionato nell'app per Android campione di Aviary

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); 
Problemi correlati