2012-11-20 17 views
7

Używam woliery do edycji obrazu w mojej aplikacji na Androida, ale zauważyłem, że powracający obraz jest mniejszy niż oryginał.Rozmiar obrazu zwróconego przez wolierę jest mniejszy niż oryginał

Na przykład przeszedłem duży obraz 2560x1920 do woliery, ale powracający obraz ma rozmiar 480x640.

To jest mój kod:

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

Czy tęsknię za nic?

+0

Czy używałeś hi-res-output? W przeciwnym razie zwracany jest tylko mniejszy podgląd, którego rozmiar zależy od pamięci urządzenia. –

+0

W czym mogę pomóc? Ale musisz użyć innej biblioteki. –

+0

@Freewind Przepraszamy za to, ponieważ pytam, ponieważ to pytanie nie dostarczyło żadnej odpowiedzi nawet po dwóch latach .. Otrzymałeś jakieś rozwiązanie .. Mam teraz do czynienia z tym samym problemem – Praveen

Odpowiedz

1

Wreszcie otrzymałem rozwiązanie. Jest to wymienione w woluminowej aplikacji przykładowej 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); 
Powiązane problemy