2015-03-31 93 views
0

我正在使用下面的代码从我的webservice下载一些图像,它工作得很好,但是在它们被下载并复制到SD卡后,它们是未知的文件类型,尽管它们有.jpg最后我的应用程序仍然可以将它们加载到图像浏览器中,但是我无法通过设备的图库从文件管理器中打开任何下载的图像。任何想法?Android下载的图像格式不正确

以下是我下载并保存图像:

public void downloadImage(String url, String fileName) { 
    try { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     String[] fileNameSplit = fileName.split("\\."); 
     String fileNameMobile = fileNameSplit[0] + "-mob." + fileNameSplit[1]; 

     URL urlConnection = new URL(url); 
     URLConnection connection = urlConnection.openConnection(); 

     InputStream in = connection.getInputStream(); 

     File outFile = new File(file.getPath() + "/" + fileNameMobile); 
     OutputStream out = new FileOutputStream(outFile); 

     copyFile(in, out); 
     out.close(); 
     in.close(); 


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

} 

示例文件名中的文件管理器浏览目录:

_58df8aa6dbb44ff7b870b49a4b2d8efb-mob.jpg 
+0

谨慎解释倒票? – 2015-03-31 22:18:25

+0

您是否将“.jpg”扩展名添加到文件名? – 2015-03-31 22:22:48

+0

@BlackMagic是的,它在那里。应用程序可以将图像加载到图像浏览中,但通过使用文件管理器,它们是未知文件,尽管它们最后有.jpg。 – 2015-03-31 22:26:22

回答

1

试试这个

bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outStream); 

这里的小例子

File file = new File(file.getPath() + "/" + fileNameMobile); 
FileOutputStream fOut = new FileOutputStream(file); 

bmp.compress(Bitmap.CompressFormat.JPEG, 85, fOut); 
fOut.flush(); 
fOut.close(); 
0

看来,我从URL中读取下载的文件名后,有一个\n被添加到代码的结尾,导致该文件未知,并且以后也无法使用相同的文件名读取该文件没有\n,但现在通过从文件名末尾删除\n它现在工作正常。