【问题标题】:Display image from sd card (Android 2.3 vs 4.0.4)从 sd 卡显示图像 (Android 2.3 vs 4.0.4)
【发布时间】:2012-10-03 07:35:09
【问题描述】:

我正在使用此代码下载图像:

// Download AVATAR
                    try {
                        File avatar = new File(Environment.getExternalStorageDirectory() + "/Android/data/carl.fri.fer.omegan/avatar.jpg");
                        prefs.edit().putString("loginUser", json.name).commit();
                        prefs.edit().putInt("loginMatter", json.darkmatter).commit();

                        if (!avatar.exists()) {
                            Log.i("AVATAR", "Downloading user avatar...");
                            URL url = new URL("Valid URL");

                            URLConnection ucon = url.openConnection();
                            InputStream is = ucon.getInputStream();
                            BufferedInputStream bis = new BufferedInputStream(is);
                            ByteArrayBuffer baf = new ByteArrayBuffer(50);
                            int current = 0;
                            while ((current = bis.read()) != -1) {
                                    baf.append((byte) current);
                            }

                            FileOutputStream fos = new FileOutputStream(avatar);
                            fos.write(baf.toByteArray());
                            fos.close();
                        }
                        else Log.i("AVATAR", "The user avatar already exists!");
                } catch (IOException e) { System.out.println("Error downloading avatar: " + e); }

然后我尝试使用此代码显示此图像:

File usrAvatar = new  File(Environment.getExternalStorageDirectory() + "/Android/data/carl.fri.fer.omegan/avatar.jpg");
            if(usrAvatar.exists()) {

                Bitmap avatarBmp = BitmapFactory.decodeFile(usrAvatar.getAbsolutePath());
                userAvatar.setImageBitmap(avatarBmp);
            }

问题出现在这里:

userAvatar.setImageBitmap(avatarBmp);

Android 4.0.4:错误类型:NullPointerException

Android 2.3.5:错误类型:ImageView 不显示图片但未出现错误

1- ImageView userAvatar 是正确的,因为我可以显示可绘制文件夹中的图像。

2- 我要显示的图像已成功下载,因为使用文件管理器我可以在指定的文件夹和文件名上找到它。

3- 图像没有损坏,因为我可以使用任何图像查看器打开它。

那么,这可能是问题所在?快疯了!

任何帮助将不胜感激。

谢谢你!

【问题讨论】:

    标签: android image imageview android-sdcard


    【解决方案1】:

    试试下面的代码:

            ImageView bmImage;
          FileInputStream instream = new FileInputStream("/sdcard/Pictures/Image.png"); 
                BufferedInputStream bif = new BufferedInputStream(instream); 
                byteImage1 = new byte[bif.available()]; 
                bif.read(byteImage1); 
                textView.append("\r\n" + byteImage1+"\r\n"); 
                            bmImage.setImageBitmap(BitmapFactory.decodeByteArray(byteImage1, 0, byteImage1.length));
                textView.append("\r\n" + byteImage2+"\r\n"); 
    

    【讨论】:

    • 17179 是该图像的长度,现在我已经编辑了答案检查
    • 它仍然抛出 NullPointerException 和 textView trhows [B@4178be30...
    • 某处你做错了,它工作得很好,对我来说很好......离开textview...... ImageView将像我提到的那样显示来自SDCard文件的图像...... bmImage.setImageBitmap (BitmapFactory.decodeByteArray(byteImage1, 0, byteImage1.length));这将在屏幕上显示图像
    • 我用来下载、存储和显示图像的所有代码都在我的问题中。我不明白...我reteieve de image,没关系。
    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多