Android 保存图像并将所有图像复制到sd卡中

Android 保存图像并将所有图像复制到sd卡中,android,eclipse,android-image,Android,Eclipse,Android Image,我有10张图片,想把所有这些图片保存在android应用程序内存中。因此,每当有人使用安装此应用程序时,他已经拥有了所有这些图像 我已经硬编码了很多次,没有得到很好的回应 有办法吗。所以我会做的 请帮助我将所有图像存储在APK的资产文件夹中。安装后,扫描内存,查看是否有所需的图像。如果没有,请复制到那里。这样,即使用户清除了应用程序的数据,您也可以将它们复制回来。另一个好处是,用户也不会知道关于它的任何信息,因此这是一个很好的用户体验。唯一的问题是您的APK大小会增加,所以请相应地进行管理 试试

我有10张图片,想把所有这些图片保存在android应用程序内存中。因此,每当有人使用安装此应用程序时,他已经拥有了所有这些图像

我已经硬编码了很多次,没有得到很好的回应

有办法吗。所以我会做的


请帮助我将所有图像存储在APK的资产文件夹中。安装后,扫描内存,查看是否有所需的图像。如果没有,请复制到那里。这样,即使用户清除了应用程序的数据,您也可以将它们复制回来。另一个好处是,用户也不会知道关于它的任何信息,因此这是一个很好的用户体验。唯一的问题是您的APK大小会增加,所以请相应地进行管理

试试下面的代码

InputStream inputStream = getAssets().open("yourfile.jpg");
            OutputStream out = new FileOutputStream(new File("/sdcard/yourfile.jpg"));
            int read = 0;
            byte[] bytes = new byte[1024];
            while ((read = inputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            inputStream.close();
            out.flush();
            out.close();

将所有图像存储在APK的资产文件夹中。安装后,扫描内存,查看是否有所需的图像。如果没有,请复制到那里。这样,即使用户清除了应用程序的数据,您也可以将它们复制回来。另一个好处是,用户也不会知道关于它的任何信息,因此这是一个很好的用户体验。唯一的问题是您的APK大小会增加,所以请相应地进行管理

试试下面的代码

InputStream inputStream = getAssets().open("yourfile.jpg");
            OutputStream out = new FileOutputStream(new File("/sdcard/yourfile.jpg"));
            int read = 0;
            byte[] bytes = new byte[1024];
            while ((read = inputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            inputStream.close();
            out.flush();
            out.close();

您可以将文件保存在您的资产或res文件夹中,在这里,我将文件保存在res/drawable/中,并在需要时将其复制到SD卡上。在下面的代码中,我们首先检查文件是否不存在,然后从drawable创建一个位图,并将文件写入sdcard

  File file = new File(pathExt+"/Pictures/", "s1.png");
                if(isSDCARDMounted()){
                if (!file.exists()) {
                    bmp = BitmapFactory.decodeResource(getResources(),
                            R.drawable.s1);

                    try {

                        FileOutputStream outStream = new FileOutputStream(file);
                        bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                        outStream.flush();
                        outStream.close();
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                        }
}
isSDCARDMounted:用于检查卡是否已安装的功能

pathExt:外部存储目录路径的变量

确保设置了在外部存储器上写入的权限

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

您可以将文件保存在资产或res文件夹中,我已将文件保存在res/drawable/中,并在需要时将其复制到SD卡上。在下面的代码中,我们首先检查文件是否不存在,然后从drawable创建一个位图,并将文件写入sdcard

  File file = new File(pathExt+"/Pictures/", "s1.png");
                if(isSDCARDMounted()){
                if (!file.exists()) {
                    bmp = BitmapFactory.decodeResource(getResources(),
                            R.drawable.s1);

                    try {

                        FileOutputStream outStream = new FileOutputStream(file);
                        bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
                        outStream.flush();
                        outStream.close();
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                        }
}
isSDCARDMounted:用于检查卡是否已安装的功能

pathExt:外部存储目录路径的变量

确保设置了在外部存储器上写入的权限

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


使用资产文件夹可能会有帮助。是否需要在资产中创建任何子文件夹或直接复制所有imagesCreate资产文件夹,请确保此文件夹与res/src/using assets文件夹处于同一级别可能会有帮助。是否需要在资产中创建任何子文件夹或直接复制所有imagesCreate资产文件夹,确保此文件夹与res/src/i使用的文件夹处于同一级别。第一个答案,但它给我一个例外“未能复制文件:图像”。是否需要在此处更改files=assetManager.list(“”;)。。我只需复制Assets Folder中的所有文件您只需复制图像,然后使用文件流将其复制出来。AssetManager无法区分不同的文件,因为一切都是数据流。所以,试着遵循萨米人使用它的方式。第一个答案,但它给我一个例外“未能复制文件:图像”。是否需要在此处更改files=assetManager.list(“”;)。。我只需复制Assets Folder中的所有文件您只需复制图像,然后使用文件流将其复制出来。AssetManager无法区分不同的文件,因为一切都是数据流。所以,试着遵循同样的原则