在Android和iOS中读取静态图像

来源:互联网 发布:goeasy实现java推送 编辑:程序博客网 时间:2024/05/17 08:02

在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

0 0
原创粉丝点击