2017-02-07 25 views
0

Я не хочу использовать метод сжатия bitmap. Я просто хочу написать прямо в SD-карту. Не хочу использовать сжатие в моем случае.Как записать растровое изображение в файл без метода bitmap.compress

+0

Наиболее распространенные форматы изображений сжимаются по своей природе (например, PNG, JPEG, WebP). Какой ** конкретный формат изображения вы хотите использовать? – CommonsWare

+0

Я хочу изображение в самой PNG, но не хочу, чтобы метод уменьшал его размер или разрешение. Сохраните файл как оригинал. –

+1

«не хочу, чтобы метод уменьшал его размер или разрешение» - 'compress()' никогда не изменяет разрешение. «Сохранить файл как оригинал» - поскольку вы не предоставили [mcve], демонстрирующий, откуда приходит «оригинал», и поскольку вы не определили, что именно вы подразумеваете под «сохранить файл как оригинал», это будет сложно для любой, кто поможет вам. – CommonsWare

ответ

1

Судя по названию: Это экономит URL непосредственно в файл:

FileOutputStream output = ctx.openFileOutput(localFileName, context.MODE_PRIVATE); 

      URLConnection openConnection = new URL(url).openConnection(); 
      openConnection.connect(); 
      InputStream inputStream = openConnection.getInputStream(); 
      byte[] buffer = new byte[1024]; 
      for (int n = inputStream.read(buffer); n >= 0; n = inputStream.read(buffer)) 
       output.write(buffer, 0, n); 
      output.flush(); 
      output.close(); 
      inputStream.close(); 

Вы можете изменить openFileOutput для нового FileOutputStream (новый файл ("Filepath")) для хранения на SDCard

Но, похоже, у вас проблемы с API ImageLoader.

+0

делает индекс 1024 достаточным для любого размера файла изображения? –

+0

Бафф используется для inputStream.read. Многие обсуждения можно найти вокруг этого числа, но мы обычно используем 1024 или 2048. http://stackoverflow.com/questions/8748960/how-do-you-decide-what-byte-size-to-use-for-inputstream -read –

+0

работает как шарм !!! –