Prevenir bitmap grande demais para ser carregado em um android textura

? Pratik @ | Original: StackOverFlow
---

Eu preciso para exibir a imagem original em tela cheia em forma de galeria. Para polegar será funcionar perfeitamente e quando eu tento mostrar que a imagem em tela cheia com fonte original não será capaz de exibir . Na maioria dos casos, se a resolução da imagem é maior que 2000, em seguida, ele irá exibir bitmap erro muito grande para ser carregado em um android textura.

Eu quero evitar isso, eu tenho de busca google, mas não obtive qualquer resposta sobre isso.

---

Top 5 Responder

1shem @

Você não precisa carregar a imagem inteira, porque é muito grande e, provavelmente, o seu telefone não será capaz de mostrar o bitmap pixels completos. Você precisa escalá-lo em primeiro lugar de acordo com o tamanho da tela do dispositivo . Este é o melhor método que eu encontrei e ele funciona muito bem:  http://stackoverflow.com/questions/3331527/android-resize-a-large-bitmap-file-to-scaled-output-file

2Minas @

Confira este exemplo http://developer.android.com/training/displaying-bitmaps/index.html

ImageResizer.decodeSampledBitmapFrom * usar esse método para obter imagem downscaled .

3Gilbert92 @

Acabei de criar uma função mais para se verificar se a imagem é maior do que 1M pixels aqui está o código de exemplo:

public void onActivityResult(int requestCode, int resultCode, Intent data) {

   if (resultCode == RESULT_OK) {

     if (requestCode == SELECT_PICTURE) {

        Uri selectedImageUri = data.getData();
        selectedImagePath = getPath(selectedImageUri);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 4;

        Bitmap bitmap = BitmapFactory.decodeFile(selectedImagePath);
        int height = bitmap.getHeight(), width = bitmap.getWidth();

        if (height > 1280 && width > 960){
            Bitmap imgbitmap = BitmapFactory.decodeFile(selectedImagePath, options);
            imageView.setImageBitmap(imgbitmap);

            System.out.println("Need to resize");

        }else {
            imageView.setImageBitmap(bitmap);
            System.out.println("WORKS");
        }