在Android和iOS中读取静态图像

在iOS中读取静态图像

在使用swift语言编写iOS代码时,若想通过SWIFT直接读取指定的图像,可通过下列方法实现。
1. 把需要读取的图像添加到Xcode项目中
2. 在需要读图像的地方使用如下代码读image

        let Img1 = UIImage(named:"img1.png")
        let Img2 = UIImage(named:"img2.png")

读取成功后就可以对Img1和Img2进行操作了。

在Android中读取静态图像

在Android中读取静态图像,需要首先把图像放到 res的drawable-hdpi、drawable-mdpi、drawable-ldpi文件夹中,然后可通过如下语句读取。

Bitmap bitmap=BitmapFactory.decodeStream(getClass().getResourceAsStream(“/res/drawable/img1.bmp”));

但这样读取到的图像分辨率与原图不一致。如果要求读取到的图像分辨率跟原图保持一致则要麻烦一些。可通过如下自定义函数来实现读取的图像分辨率与原图一样。

    private Bitmap decodeResource(Resources resources, int id) {
        TypedValue value = new TypedValue();
        resources.openRawResource(id, value);
        BitmapFactory.Options opts = new BitmapFactory.Options();
        opts.inTargetDensity = value.density;
        return BitmapFactory.decodeResource(resources, id, opts);
    }

使用该函数读取图像成功后,可通过如下的方式把图像转化为整形数组。

Bitmap bmp1 = decodeResource(getResources(),R.drawable.img1);
int[] dataImg = new int [bmp1.getWidth() * bmp1.getHeight()];
bmp1.getPixels(dataImg, 0, bmp1.getWidth(), 0, 0, bmp1.getWidth(), bmp1.getHeight());

注意:
原本图像的数据是Byte流的形式,以上dataImg的存储方式中,刚好图像的RGBA四个Byte等于一个Int。这样可以提高空间利用率。

Reference:
http://blog.sina.com.cn/s/blog_637607ec010158du.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章