ImageView不显示JPEG

时间:2014-07-04 07:22:02

标签: java android imageview

我有一个不想显示JPEG的ImageView,但会在ListView中显示所有其他PNG。我尝试过添加透明背景等功能,但没有任何效果。为了获取数据,我下载了所有图像,并将它们存储在SQLite数据库中的blob中。我通过从数据库中获取信息来检索它们,并且根据数据库,它们是可用的二进制JPEG数据。

以下是我想要显示的图片(我已将其下载到二进制数据中):http://image-store.slidesharecdn.com/1a4f1444-02e2-11e4-9166-22000a901256-large.jpeg

以下是我用来尝试将二进制数据转换回Bitmap的代码:

            try 
            { 
                String profilePictureBytes = submittedImageTemp; // this string holds the binary jpeg, png data, etc.
                byte[] encoded;

                try 
                {
                    encoded = profilePictureBytes.getBytes("ISO-8859-1");
                    ByteArrayInputStream imageStream = new ByteArrayInputStream(encoded);
                    Bitmap theBitmap = BitmapFactory.decodeStream(imageStream); 

                    attachPreviewOne.setBackgroundColor(Color.TRANSPARENT);
                    attachPreviewOne.setImageBitmap(theBitmap); 
                } 
                catch (UnsupportedEncodingException e) 
                {
                    e.printStackTrace();
                }
            }

1 个答案:

答案 0 :(得分:0)

一个。将你的jpeg从blob中提取到temp file。您可能希望将getCacheDir()文件夹用于该

B中。从临时文件加载它:

 BitmapFactory.Options options = new BitmapFactory.Options();
 Bitmap bm = BitmapFactory.decodeFile(jpegTemFile, options);  //<------------
 imageView.setImageBitmap(bm);


以上应该工作正常。仍然 - 你可能想要考虑的事情很少:

℃。根据您的jpeg,加载操作 - decodeFile - 可能很长。你可能想要在一个 的AsyncTask。

d。您可能还需要考虑设置sampleSize以减小加载图像的大小:

options.inSampleSize = 2; // setting to N will reduce in-memory size by factor of N*N


或者,您可以使用Picasso来完成工作。我在几个项目中使用它,并对我得到的内容感到满意:

Picasso.with(context)
  .load(url)
  .resize(50, 50)
  .centerCrop()
  .into(imageView)