2015-11-10 2 views
0

Я пытаюсь изменить размер захваченного изображения так, чтобы он мог иметь размер меньше 1 МБ. Это то, что я до сих пор пробовал в OnActivityResult, но не удалось. Я получить учебник от Android take photo and resize it before saving on sd cardИзменить размер снятого изображения перед сохранением

ImageFitScreen.java

try { 
        Bitmap bitmap; 
        BitmapFactory.Options bitmapOptions = new BitmapFactory.Options(); 
        bitmapOptions.inJustDecodeBounds = false; 
        bitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565; 
        bitmapOptions.inDither = true; 
        bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions); 
        Global.img = bitmap; 

        b.setImageBitmap(bitmap); 
        String path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default"; 
        //p = path; 
        f.delete(); 
        OutputStream outFile = null; 
        File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".png"); 
        try { 

         outFile = new FileOutputStream(file); 
         bitmap.compress(Bitmap.CompressFormat.PNG, 100, outFile); 
         //pic=file; 
         outFile.flush(); 
         outFile.close(); 


        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 

        } catch (IOException e) { 
         e.printStackTrace(); 

        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } catch (Exception e) { 
        e.printStackTrace(); 

       } 

      } 

Claims.java

button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 

       if ((name != null && name.trim().length() > 0) && (result != null && result.trim().length() > 0)) { 
        // Toast.makeText(getActivity().getApplicationContext(), fk+"", Toast.LENGTH_LONG).show(); 
        byte[] data=getBitmapAsByteArray(getActivity(),Global.img);// this is a function 
        Toast.makeText(getActivity().getApplicationContext(), data+"", Toast.LENGTH_LONG).show(); 

        if(data==null) 
        { 
         Toast.makeText(getActivity(), "null", Toast.LENGTH_LONG).show(); 
        } 
        else 
        { 


         Toast.makeText(getActivity(), " not null", Toast.LENGTH_LONG).show(); 
         SB.insertStaffBenefit(name, data, description, result, fk); 
        } 

     }); 
     return claims; 
    } 

    public static byte[] getBitmapAsByteArray(final Context context,Bitmap bitmap) { 
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 0, outputStream); 
     Toast.makeText(context, outputStream.size()/1024+"KB", Toast.LENGTH_LONG).show(); 
     return outputStream.toByteArray(); 
    } 

В Claims.java, он по-прежнему отображается размер, который больше, чем 1Mb

Может кто-нибудь мне помочь? Благодаря

+0

Пожалуйста, объясните, ** полностью и точно **, что означает «сбой». Например, вы рушитесь? Если это так, используйте LogCat для проверки вашей трассировки стека Java, связанной с вашим сбоем: https://stackoverflow.com/questions/23353173/unappro-myapp-has-stopped-how-can-i-solve-this – CommonsWare

+0

@CommonsWare I ' Мне так жаль. Я редактировал свой пост. –

+0

Это правильный способ реализации? Или я реализовал в неправильных местах? –

ответ

0

проверить ссылку ниже

How to resize Image in Android?

Для лучшего пользовательского интерфейса дает тост пользователю с просьбой загрузить изображение определенного размера еще он загружает больше изображений проверить его в интерфейсе или сервере и дать отрицательный ответ или подскажите привет, чтобы снова загрузить изображение меньшего размера.

Смежные вопросы