2012-11-20 12 views
7

私はAndroidアプリケーションで画像を編集するためにAviaryを使用していますが、返す画像はオリジナルよりも小さいことがわかりました。Aviaryから返された画像のサイズが元の画像のサイズより小さい

たとえば、大きな画像2560x1920をアビエリに渡しますが、戻ってくる画像は480x640です。

これは私のコードです:

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

は、私は何を欠場か?

+0

高解像度出力を使用しましたか?小さい方のプレビューのみが返され、サイズはデバイスのメモリに依存します。 –

+0

私はあなたを助けることができますか?しかし、あなたは他のlibを使う必要があります。 –

+0

@Freewindこの質問は2年後にも何の答えも得られなかったので私は尋ねているようにこれを申し訳ありません..あなたは解決策を得ました..私は今同じ問題に直面している – Praveen

答えて

1

最後に解決策を得ました。これはAviary androidサンプルアプリに記載されています

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); 
関連する問題