我正在开发一个Android应用程序,我有一个问题,显示从http服务器下载的一些图像。 这是下载的代码:
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(URI.create(imageURL));
httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("user", "password"), "UTF-8", false));
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity responseEntity = httpResponse.getEntity();
InputStream input = responseEntity.getContent();
// Get the bitmap
Options opt = new Options();
opt.inScaled = true;
opt.inDensity = 1;
opt.inTargetDensity = 1;
opt.inPreferQualityOverSpeed = false;
opt.inPurgeable = true;
opt.inSampleSize = 2;
Bitmap myBitmap = BitmapFactory.decodeStream(input, null, opt);
// Save the bitmap to the file
String path = SMVAndroid.IMAGE_PATH;
OutputStream fOut = null;
File file = new File(path, fileName.concat(".jpeg"));
fOut = new FileOutputStream(file);
/*int byteRead;
while((byteRead = input.read()) != -1){
fOut.write(byteRead);
}*/
myBitmap.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
fOut.flush();
fOut.close();
有些图片无法使用此方法下载,因此我尝试了注释代码并进行了下载,但我无法在ImageView组件上显示它。 我试图看看图像是否采用不同的格式(尽管有扩展名)并使用一个名为trid的程序(http://mark0.net/soft-trid-e.html)我发现了那些图像不工作被识别为jpeg-exif,工作的只是jpeg。我已经在我的电脑上下载了图像并使用程序来读取exif信息,而那些工作的信息没有任何信息。我已经得出结论问题可能是这个信息,但是当我用Android手机拍照时,它也将这些信息保存在文件中,所以我不知道这个问题是什么。 我也尝试在Android浏览器中查看图像,但它不起作用。它在原生图像查看器中也不起作用。我可以设法在Chrome浏览器中看到图像,但是当我尝试使用浏览器下载它时,它不会下载。 有谁知道问题是exif吗? 我在这里上传了图片: http://img407.imageshack.us/img407/5977/1007e.jpg
答案 0 :(得分:1)
我已经解决了这个问题。问题不在于Exif信息。这是图像的颜色类型。似乎android无法读取CMYK格式的图像。我已经转换为RGB并打开了。 :)
答案 1 :(得分:0)
我不认为Exif是问题所在。 Android确实提供了ExifInterface来从jpg图像中读取exif数据。尝试通过ExifInterface读取exif数据,看看你得到了什么。