从资产中显示图像并将其存储在SD卡中的方法

时间:2012-12-04 19:40:00

标签: android webview imageview

我正在创建一个壁纸应用程序,因此我将一些图像放在资产文件夹中。我需要在按钮点击时逐个显示此图像并将其存储在SD卡中 我做了什么: 我使用ImageView和WebView来显示图像。首先,当我使用WebView时,我坚持设置图像大小,因为它显示为小,我需要根据设备窗口大小显示这些图像。
我使用以下代码但没有帮助调整屏幕上的图像

myWebView.loadUrl("file:///android_asset/image.html");
    WebSettings settings = myWebView.getSettings();
    settings.setUseWideViewPort(true);
    settings.setLoadWithOverviewMode(true);

我也设置了<src img="someimage.jpg" width=""100%">,但它对我没有帮助。

然后我使用ImageView显示图像,并能够使用以下代码至少以适当的大小显示图像。

InputStream ims = getAssets().open("31072011234.jpg");
        // load image as Drawable
        Drawable d = Drawable.createFromStream(ims, null);
        // set image to ImageView
        imageView.setImageDrawable(d);

我的问题是
哪个是在屏幕imageview或webview上显示图像的好方法?当我不知道这个图像的名称并将其存储在SD卡中时如何拍摄阵列中的所有图片 给我一些提示或参考。
提前致谢。

2 个答案:

答案 0 :(得分:1)

您无需将图片放在assets文件夹中,您可以使用res/drawable存储图片并以resource的形式访问它。

使用以下代码,您可以从drawable访问图像,而无需知道图像文件的名称。

Class resources = R.drawable.class;
    Field[] fields = resources.getFields();
    String[] imageName = new String[fields.length];     
    int index = 0;
    for( Field field : fields )
    {
        imageName[index] = field.getName();
        index++;
    }

    int result = getResources().getIdentifier(imageName[10], "drawable", "com.example.name");  

使用以下代码,您可以将图像保存到SD卡。

File file = new File(extStorageDirectory, "filename.PNG");
 outStream = new FileOutputStream(file);
 bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
 outStream.flush();
 outStream.close();

答案 1 :(得分:0)

显示图片的最佳方式是ImageView(这就是为什么它被称为图片视图),我建议您在res/drawable文件夹中添加图片并显示图像使用:

imageView.setImageResource(R.id.some_image);

可以使用以下方法将资源保存到SD卡:

Bitmap bm = BitmapFactory.decodeResource( getResources(), R.id.some_image);
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File file = new File(extStorageDirectory, "someimage.PNG");
outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();