2015-12-30 6 views
0

Я код для создания архива с изображениями в пределах нижеСжатие изображения перед сохранением в почтовый файл

public void zip(String[] files, String zipFile) { 

    final String[] _files = files; 
    final String _zipFile = zipFile; 

    Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 

       BufferedInputStream origin = null; 
       FileOutputStream dest = new FileOutputStream(_zipFile); 

       ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest)); 

       byte data[] = new byte[BUFFER]; 

       for (int i = 0; i < _files.length; i++) { 
        Log.d("add:", _files[i]); 
        Log.v("Compress", "Adding: " + _files[i]); 
        FileInputStream fi = new FileInputStream(_files[i]); 
        origin = new BufferedInputStream(fi, BUFFER); 
        ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1)); 
        out.putNextEntry(entry); 
        int count; 
        while ((count = origin.read(data, 0, BUFFER)) != -1) { 
         out.write(data, 0, count); 
        } 
        origin.close(); 
       } 

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

    thread.start(); 
} 

Я называю метод почтовый индекс (stockArr «/ хранение/sdcard0/MyAnnouncementImages.zip»), изображения не сжимаются, тогда, если каждый снимок весит 3 Мб, zip-файл будет настолько тяжелым, тогда мне нужно сжать каждое изображение перед тем, как положить его в zip-файл, какая-нибудь помощь?

+1

Какие изображения вы пытаетесь сжать? Многие типы файлов изображений уже сжаты. –

+0

все виды изображений, мне нужен такой компресс (Bitmap.CompressFormat.JPEG, 10, outputStream), чтобы уменьшить размер изображения. –

+1

Если ваши файлы являются изображениями JPEG или PNG, они уже сжаты, и вы не можете их сделать меньше, без повторного изменения всего изображения при более низком качестве. Сколько сжатий вы получаете, если вы вручную сжимаете свои файлы командой 'gzip -9 image.bmp' или' gzip -9 image.jpg'? –

ответ

0

Вы пытаетесь использовать Bitmap?

Bitmap bitmap = Bitmap.createScaledBitmap(capturedImage, width, height, true); 

Укажите ширину и высоту битовой карты, так что ... высоту и ширину вы можете установить в соответствии с экраном точек на дюйм устройства.

+0

Как я могу добавить к коду, который я показал? У меня нет идеи, как агрегировать, потому что stockarr - это строка [], тогда сначала мне нужно преобразовать в растровое изображение, а затем снова конвертировать строку в каждую позицию ... –

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