2016-10-17 5 views
-4

Я пробовал несколько решений из Интернета без везения. Как мне изменить размер изображения при загрузке приложения? Я хочу, чтобы это было так, что когда я загружаю файл размером 2 МБ, он отправляется на сервер с размером = 50 КБ. Пожалуйста, помогите мнеРазмер изображения для сжатия андроидов перед отправкой на сервер

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    //get image thumbnail 
    if (requestCode == REQUEST_CODE_PICKER && resultCode == RESULT_OK && data != null) { 

     ArrayList<Image> images = data.getParcelableArrayListExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES); 

     absolutePath = null; 
     // do your logic .... 
     for (Image img : images) { 
      Log.v(LOG_TAG, img.getName() + " " + img.getPath()); 
      absolutePath = img.getPath(); 
      absolutePath = String.valueOf(Compressor.getDefault(getContext()).compressToFile(imageFile)); 
      Bundle bundleExtras = data.getExtras(); 
      image = (Bitmap) bundleExtras.get("data"); 
     } 
     consultantProfileImageView.setImageBitmap(getBitmapFromPath(absolutePath)); 
     new UploadConsultantProfileImageTask(getContext(), absolutePath).execute(); 
     postConsultant(); 
    } 

} 

public File getBitmapFromPath(String filePath) { 
    File imageFile = new File(filePath); 
    Bitmap imageBitmap = null; 
    imageBitmap = BitmapFactory.decodeFile(filePath); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
    InputStream in = new ByteArrayInputStream(bos.toByteArray()); 
    File compressedImageFile = Compressor.getDefault(getContext()).compressToFile(imageFile); 
    if (compressedImageFile.exists()) { 
     imageBitmap = BitmapFactory.decodeFile(compressedImageFile.getAbsolutePath()); 
    } 

    return compressedImageFile; 
} 
+2

«Я попробовал несколько решений из Интернета, не повезло» - пожалуйста, объясните, что вы пытались (с помощью [mcve]) и что конкретно «не повезло» не означает, что по отношению к тому, что вы пробовали. «когда я загружаю файл размером 2 МБ» - пожалуйста, объясните ** подробно **, какой файл это (PNG, JPEG, RAW, GIF, WEBP и т. д.) и где вы его сохранили. – CommonsWare

+0

Вы хотите, чтобы ваше приложение сжимало изображение или вы планируете сделать это вручную? Пожалуйста, объясните свой вопрос лучше .. – Rippr

+0

Мое приложение должно позволить пользователю добавлять изображение профиля, а затем обрезать/сжать его до 50 кбайт, прежде чем сохранять его на сервере – Fuluza

ответ

0

Попробуйте использовать под ним будет сжимать изображение до 80 процентов. Вы можете изменить процент сжатия в соответствии с вашим требованием.

public File getBitmapFromPath(String filePath) { 
     File imageFile = new File(filePath); 
     OutputStream fout = new FileOutputStream(file); 
     Bitmap bitmap= BitmapFactory.decodeFile(filePath); 
     bitmap.compress(CompressFormat.JPEG, 80, fout); 
     fout.flush(); 
     fout.close(); 

     return imageFile; 
} 
+0

Я пробовал, чтобы это не сработало. И для тех, кто сталкивался с теми же проблемами, что и я, я использовал эту библиотеку, найденную на https://android-arsenal.com/details/1/3758, она работает как шарм! – Fuluza

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