在Android和iOS中读取静态图像

标签: androidios读取图像
244人阅读 评论(0) 收藏 举报

在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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:131971次
    • 积分:2190
    • 等级:
    • 排名:第17966名
    • 原创:81篇
    • 转载:6篇
    • 译文:0篇
    • 评论:57条
    文章分类
    最新评论