0

我正在用 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。我已经在我的 PC 中下载了图像并使用程序来读取 exif 信息,而那些有效的则没有任何信息。我已经断定问题可能是这个信息,但是当我用安卓手机拍照时,它也将这个信息保存在文件中,所以我不知道这个问题可能是什么。我也尝试在android浏览器中查看图像,但它不起作用。它也不适用于本机图像查看器。我可以设法在 Android 的 chrome 浏览器中看到图像,但是当我尝试使用浏览器下载它们时,它不会下载。有谁知道问题是exif吗?我在这里上传了图片: http://img407.imageshack.us/img407/5977/1007e.jpg

4

2 回答 2

1

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

于 2012-12-28T12:26:22.857 回答
0

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

于 2012-12-27T18:06:37.567 回答