无法在Android中打开图片

时间:2012-12-27 17:40:02

标签: android image exif

我正在开发一个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

2 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。问题不在于Exif信息。这是图像的颜色类型。似乎android无法读取CMYK格式的图像。我已经转换为RGB并打开了。 :)

答案 1 :(得分:0)

我不认为Exif是问题所在。 Android确实提供了ExifInterface来从jpg图像中读取exif数据。尝试通过ExifInterface读取exif数据,看看你得到了什么。